我$PDO->query('SET NAMES utf8;');
在我的连接库代码中引入了一些 Unicode 合规性。这适用于某些主机,在这些主机上,我可以使用.execute()
.
但是,在某些托管计划中,我遇到了这个错误:
一般错误:2014 在其他无缓冲查询处于活动状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只针对 mysql 运行,您可以通过设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性来启用查询缓冲。
所以,在 SET NAMES 之前,我介绍了$PDO->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
,但我仍然收到错误消息。然后我将该值设置为 FALSE,但我仍然收到错误消息。
当然,如果我删除该"SET NAMES utf8"
语句,问题就会消失。再说一次——这个问题只发生在一些网络主机上。
将 MySQL 切换到适用于大多数 Linux 托管计划的 Unicode 的正确方法是什么?