在MYSQL中捕获错误

时间:2012-01-06 17:32:19

标签: mysql transactions

我想实现一个批处理MySQL脚本来在数据库中执行某些操作。问题是,对于我拥有的每个主ID,我想插入4个元组。但是这个元组应该添加到事务中,这意味着如果这4个元组中的一个失败,则事务应该回滚。然后我需要一些捕获机制来捕获查询失败。我只能使用PURE MYSQL,既不是PHP,也不是PERL等。即使我不能创建任何存储过程来做到这一点。在Microsoft SQL Server中有@@ error变量解决了我的问题但在MYSQL中我们没有任何显示错误代码的系统变量。 我怎么能这样做?

干杯,

1 个答案:

答案 0 :(得分:0)

这是一个丑陋的解决方法,但当我尝试导入一批SQL查询并将整个事物包装在一个事务中时,它对我有用,因此如果任何SQL查询出错,我可以回滚。

由于批处理的大小很大,因此也不能选择带有条件处理程序的SQL过程。

你必须手动手动,所以除非你是批处理,否则它确实不是解决方案:

首先,确保整个批次存储在SQL文件中。 SQL文件应该只包含批处理查询,而不包含事务控制查询。

然后启动MySQL命令行客户端并手动输入事务命令:

mysql> SET AUTOCOMMIT = 0;
mysql> START TRANSACTION;

然后告诉命令行客户端运行批处理文件:

mysql> SOURCE path/to/file.sql

之后,您只需手动COMMIT;ROLLBACK;,具体取决于您对查询结果的满意程度。

但这是一个很好的例子。任何人都有更好的方法吗?