我已将以下行添加到我的/etc/my.cnf
文件中:
init-connect = 'SET NAMES utf8'
重新启动服务器,命令按预期工作。但是,Symfony(1.4)也通过以下方式为每个查询发出相同的命令:
// lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php
// line 125
public function setCharset($charset) {
$query = 'SET NAMES ' . $this->quote($charset);
$this->exec($query);
parent::setCharset($charset);
}
我很好奇,是否有一种优雅的方法来禁用charset的自动设置?对于来自Symfony的每个查询,发出两个执行相同操作的查询没有多大意义。
答案 0 :(得分:0)
将此事件监听器从lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php
复制到lib/database/sfDoctrineConnectionListener.class.php
并删除第31行$this->connection->setCharset($this->encoding);
并清除缓存。
它不是那么优雅,但你不能简单地取消注册听众。