Javascript 如何正确执行此mysql查询?

Javascript 如何正确执行此mysql查询?,javascript,mysql,sql,Javascript,Mysql,Sql,我正在使用npm模块“mysqljs”,并试图通过它执行查询 它的目的是检查某个约束或外键是否存在,如果存在则删除它 不幸的是,我出现了以下错误,无法找出问题所在: 错误:您的SQL语法有错误;查看与MySQL服务器对应的手册 使用“如果存在”的正确语法的版本 选择* 来自第1行的信息\u SCHEMA.REFERENTIAL\u约束 代码如下所示,当然是简化版: const query = ` IF EXISTS ( SELECT * FROM INFORMATION_S

我正在使用npm模块“mysqljs”,并试图通过它执行查询

它的目的是检查某个约束或外键是否存在,如果存在则删除它

不幸的是,我出现了以下错误,无法找出问题所在:

错误:您的SQL语法有错误;查看与MySQL服务器对应的手册 使用“如果存在”的正确语法的版本 选择* 来自第1行的信息\u SCHEMA.REFERENTIAL\u约束

代码如下所示,当然是简化版:

const query = `
  IF EXISTS (
    SELECT * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME LIKE "Location_User";
  ) THEN
    ALTER TABLE Location DROP CONSTRAINT Location_User;
  END IF
  `

connection.query(query, (error, results) {
  if (error) throw error;
  return results
});
不能在存储过程之外使用IF语句

改为使用JavaScript执行逻辑

connection.query(`SELECT COUNT(*) AS count
                  FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
                  WHERE CONSTRAINT_NAME LIKE "Location_User";`, (error, results) => {
  if (error) {
    throw error;
  }
  if (results[0].count > 0) {
    connection.query('ALTER TABLE Location DROP CONSTRAINT Location_User;', (error) => {
      if (error) {
        throw error;
      }
    });
  }
});

也许会有帮助这能回答你的问题吗@爆米花对DDL语句不起作用。您需要将此代码放入存储过程中,在普通查询中不能使用IF语句。另一种方法是使用JavaScript中的if逻辑分别执行这两个查询。