当执行多命令脚本时(例如,一些 CREATE TABLE
命令和可能的一些 INSERT
命令),特别是对于 PHP 的 MySQL PDO 驱动程序,即使脚本包含语法或逻辑错误,返回值始终为 0(没有任何错误信息)。
这可以防止您运行较长的构建脚本,然后检查脚本是否成功执行。如果发生错误,进程在脚本失败的地方终止,但仍然存在 0 并且没有错误信息。
我已经在这个网站和网上搜索过这个问题的答案,似乎普遍的回答是“你对此无能为力”。我当前的解决方案是运行一个“验证构建”查询来检查一些数据并评估对此的响应 - 这似乎非常低效。
有人遇到过这个问题吗?如果是这样,您如何确保构建脚本成功执行?
最佳答案
感谢大家的回答——我没有找到解决这个问题的方法,而是最终使用了 Doctrine,它与数据库迁移很好地结合在一起。
关于PHP MySQL PDO::exec 不会引发或抛出多命令脚本的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7598888/