【发布时间】:2016-10-12 23:25:10
【问题描述】:
我正在使用 Perl DBI (execute_array),但我认为这更像是一个 mysql 问题。
我尝试DELETE几行,遇到了命令成功完成且没有错误的问题,但我的行没有被删除(修改后的行返回0E0,即“零但为真”,即, "0 行已删除")。当我通过PHPMyAdmin 尝试时,删除的行没有问题。在我的屏幕上进行了一些调试和长时间的空白凝视之后,我意识到我在 DELETE 语句中使用的列之一在添加时已被截断,这解释了为什么我的脚本无法找到该行,但 PHPMyAdmin 没有问题它。但是,这并不能解释为什么我没有收到任何错误。
所以,我想这是设计使然,但我想知道是否有办法让mysql 在您尝试删除不存在的内容时引发错误。我知道我可以检查受影响的行数是否与提供的元组数相同,但这并不能告诉我哪些行已成功删除,哪些元组引用了不存在的行(因为我使用 @ 987654326@为此目的)。有什么想法吗?
【问题讨论】:
-
没有。找不到行的
delete不是错误。您可以签入modified rows = 0的客户端代码。截断数据可能是警告或错误,具体取决于您的服务器配置。那可能是一个更好的起点。您应该为此启用严格模式,然后这将引发错误。 -
是的,就像我说的,我想这是设计使然,这不是错误,但我希望能够以某种方式为运行 DELETE 时找不到的元组抛出错误,因为我正在使用
execute_array并检查哪些元组(如果有)未能导致删除。