Mysql 错误 #2014 - 命令不同步;您现在无法在存储过程中运行此命令

Posted

技术标签:

【中文标题】Mysql 错误 #2014 - 命令不同步;您现在无法在存储过程中运行此命令【英文标题】:Mysql error #2014 - Commands out of sync; you can't run this command now in a stored procedure 【发布时间】:2019-04-25 05:19:21 【问题描述】:

我在mysql 中有以下stored procedure

DELIMITER $$
CREATE DEFINER=`user`@`localhost` PROCEDURE `insert_patient`(IN `name` VARCHAR(45), IN `surname` VARCHAR(45), IN `middle_name` VARCHAR(45), IN `patient_gender` VARCHAR(15), IN `patient_weight` VARCHAR(15), IN `patient_height` VARCHAR(15), IN `patient_ethnic_origin` VARCHAR(45))
    NO SQL
BEGIN

BEGIN
INSERT
INTO
  patient(
    name,
    surname,
    middle_name
  )
VALUES(
  name,
  surname,
  middle_name
) ;
SELECT
  LAST_INSERT_ID() AS patient_local_id;
END;
BEGIN
INSERT
INTO
  demographics(
    patient_id,
    gender,
    weight,
    height,
    ethnic_origin
  )
VALUES(
  patient_local_id,
  patient_gender,
  patient_weight,
  patient_height,
  patient_ethnic_origin
) ;
END;
END$$
DELIMITER ;

当我尝试从 phpmyadmin 执行此存储过程时,我收到以下错误:

Unrecognized keyword. (near "ON" at position 25)
SQL query: Edit Edit

SET FOREIGN_KEY_CHECKS = ON;

MySQL said: Documentation

#2014 - Commands out of sync; you can't run this command now

【问题讨论】:

错误消息中的行在您的存储过程中没有出现,至少在您实际向我们展示的代码中没有出现。但是,你应该使用SET FOREIGN_KEY_CHECKS = 1 @TimBiegeleisen 我是否必须在我的存储过程代码中包含SET FOREIGN_KEY_CHECKS = 1 嗯,你已经在你的过程代码中这样做了吗?错误信息似乎是。 @TimBiegeleisen 我的 proc 代码中没有它。也许这是默认情况下发生的事情? SET FOREIGN_KEY_CHECKS = ON; 不是有效的 MySQL AFAIK。一定有什么东西在插入此代码。 【参考方案1】:

我找到了解决方案。当我执行存储过程时,我选中了以下框。

【讨论】:

以上是关于Mysql 错误 #2014 - 命令不同步;您现在无法在存储过程中运行此命令的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:“命令不同步”错误(C 连接器)

MySQL 错误 - 命令不同步;你现在不能运行这个命令

命令不同步;在 Mysql 中调用存储过程时,您现在无法运行此命令

Mysql + django 异常:“命令不同步;您现在无法运行此命令”

Python Mysql,“命令不同步;您现在无法运行此命令”

mysql数据库同步跳过临时错误[转]