问题
我们告诉PDO将每个问题包装成异常.
在某些情况下,它会生成一些警告,然后才会抛出异常.
它为什么这样做?
重复?
SO上没有正确答案.最后一个问题是PHP PDO Exception + Warning on MySQL Has Gone Away?,但人们只是将其标记为重复而不是仔细回答.
接受的答案不回答为什么它这样做以及什么时候.所以我研究并将回答.
最佳答案 这是因为PDO可以使用mysqlnd驱动程序,它不尊重任何PDO的“转换问题到扩展”策略.
我们清楚地看到直接调用php_error_docref.
其中一个例子,如previous question所示,由这些行解释:https://github.com/php/php-src/blob/PHP-5.5.31/ext/mysqlnd/mysqlnd_wireprotocol.c#L35:L61