php – 当我们告诉它不要这样做时,为什么PDO会生成警告?

问题

我们告诉PDO将每个问题包装成异常.
在某些情况下,它会生成一些警告,然后才会抛出异常.

它为什么这样做?

重复?

SO上没有正确答案.最后一个问题是PHP PDO Exception + Warning on MySQL Has Gone Away?,但人们只是将其标记为重复而不是仔细回答.

接受的答案不回答为什么它这样做以及什么时候.所以我研究并将回答.

最佳答案 这是因为PDO可以使用mysqlnd驱动程序,它不尊重任何PDO的“转换问题到扩展”策略.

看看sources of mysqlnd driver吧.

我们清楚地看到直接调用php_error_docref.

其中一个例子,如previous question所示,由这些行解释:https://github.com/php/php-src/blob/PHP-5.5.31/ext/mysqlnd/mysqlnd_wireprotocol.c#L35:L61

点赞