我正在使用nodejs 10.26+ express 3.5+ node-mysql 2.1.1+ MySQL-Server Version: 5.6.16。
我有4个DELETE,并且只需要1个数据库请求,因此我将DELETE命令与“;” ...相连,但是它总是失败。
var sql_string = "DELETE FROM user_tables WHERE name = 'Testbase';"; sql_string += "DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';"; sql_string += "DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase';"; sql_string += "DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase';";
connection.query(sql_string, function(err, rows, fields) { if (err) throw err; res.send('true'); }); 它引发此错误:
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase';DELETE FR' at line 1 但是,如果我将此SQL粘贴到PhpMyAdmin中,它将始终成功...
如果我在单个查询中写它也是成功的。
connection.query("DELETE FROM user_tables WHERE name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_structure WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_rules WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
connection.query("DELETE FROM user_tables_columns WHERE parent_table_name = 'Testbase'", function(err, rows, fields) {
if (err) throw err;
res.send('true');
});
});
});
});
感谢帮助!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我猜您正在使用node-mysql。(但也应该适用于node-mysql2)
该文件说:
出于安全原因,禁用了对多条语句的支持(如果值未正确转义,则允许进行SQL注入攻击)。
多条语句查询 要使用此功能,必须为连接启用它:
var connection = mysql.createConnection({multipleStatements: true}); 启用后,您可以使用分号分隔每个语句,从而对多个语句执行查询;。结果将是每个语句的数组。
例 connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) { if (err) throw err;
// results
is an array with one element for every statement in the query: console.log(results[0]); // [{1: 1}] console.log(results[1]); // [{2: 2}] }); 因此,如果启用了multipleStatements,则您的第一个代码应该可以使用。来源:stack overflow