我需要为 MySQL 编写部分依赖于现有数据的安装脚本(通常使用来自 mysql 控制台的“源 [文件]”运行),并且环境存在差异,这意味着有时脚本确实会失败。一个常见的情况是带有 select(定位 id)的“SET”语句找不到任何东西;控制台将值设置为 NULL。在这种情况下,我希望脚本失败;我听说这将通过引发错误(与其他数据库)来完成。然而,MySQL 似乎没有办法做到这一点。
在这种情况下是否有强制失败的好方法?正如现在的情况一样,当插入尝试使用 null 时,更新将失败,但即使这样也不会终止脚本本身。理想情况下,它会在遇到问题时立即失败并终止。
最佳答案
我遇到了同样的问题,GUI 不适合我。这是我解决它的方法:
DELIMITER $$
DROP FUNCTION IF EXISTS sfKillConnection $$
CREATE FUNCTION sfKillConnection() RETURNS INT
BEGIN
SELECT connection_id() into @connectionId;
KILL @connectionId;
RETURN @connectionId;
END $$
DELIMITER ;
它是一个函数而不是过程,因此可以在这样的脚本中调用它:
select if(@error, sfKillConnection(), 0);
您可能需要使用 --disable-reconnect
选项启动 mysql 客户端。
关于sql - 中止 MySQL 脚本执行的方法(可能引发错误)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773889/