我们有一个使用多个 SQL 查询的应用程序,有时可能会产生奇怪的错误。
例如,它可能是:
INSERT INTO TABLE (ID, FIELD) VALUES (1, "field value");
这将导致:
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
因为违反了唯一主键约束。
在 MySQL 中是否有可能以某种方式记录错误以及导致它的查询?我试图在/etc/mysql/my.cnf中启用错误日志和通用日志,但它从未产生预期的结果。我可以在没有错误的情况下启用每个查询的日志记录(对我们来说毫无用处,我们只对导致错误的查询感兴趣)。
错误可以被应用程序捕获(在我们的例子中,我们使用 Perl DBI),但是当存储过程中有多个语句时,我们不知道是哪一个,因为错误消息不包括查询,甚至涉及的表的名称。这使得故障排除相当困难。
我确定我遗漏了一些明显的东西。例如,在 Oracle 中,这是默认行为,查询错误会记录到文本文件中,以便轻松识别。