sql - 中止 MySQL 脚本执行的方法(可能引发错误)?

标签 sql mysql exception fast-fail

我需要为 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/

相关文章:

Java - 在 try/catch 中执行 try/catch 是不好的做法吗?

sql - 显示指向同一个表的两个 id 字段的两个链接值

java - 未找到数据异常

mysql - 从 2 个表中获取数据并对结果求和值

mysql - 使用 MySql 用户变量的分歧

mysql - 创建触发器时出错

PHP:从 session 中获取用户名

sql - 计算日期字段的变化(在一段时间内)

exception - 嵌入式 ECL Lisp 错误处理获取默认错误字符串和可能的行号

.net - 将数据项添加到异常但不调用 throw ex