Error number: 3979; Symbol: ER_NOT_ALLOWED_WITH_START_TRANSACTION; SQLSTATE: HY000
Message: START TRANSACTION clause cannot be used %s
错误说明
ER_NOT_ALLOWED_WITH_START_TRANSACTION 是MySQL的一个错误,当用户试图用START TRANSACTION语句的修改会话或全局配置参数时会抛出它。此错误显示,可以使用SET语句而不是START TRANSACTION语句来更改会话和全局范围参数值。
常见案例
对会话和全局参数进行设置时可能出现ER_NOT_ALLOWED_WITH_START_TRANSACTION错误。
比如,当我们尝试将MySQL实例中的SQL模式更改为ANSI的时候
START TRANSACTION;
SET sql_mode=ANSI;
COMMIT;
在上述代码中,运行SET语句时,MySQL会出现ER_NOT_ALLOWED_WITH_START_TRANSACTION错误。
解决方法
解决此错误的最简单方法就是将SET语句放在START TRANSACTION语句的前面,而不是放在其内部。
比如:
SET sql_mode=ANSI;
START TRANSACTION;
COMMIT;
这种修改方法可以让你轻松设置会话和全局范围参数值,而不会引发ER_NOT_ALLOWED_WITH_START_TRANSACTION错误。