今天我在使用doctrine2
的应用程序中遇到以下错误Message: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like'
我用phpmyadmin检查了表格的整理是latin1_swedish_ci。
在我的应用程序中,我将doctrine配置为使用utf8
$em->getEventManager()->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit('utf8', 'utf8_unicode_ci'));
我的数据库是通过安装脚本生成的,投放了一个相等配置的实体管理器。
如何使用doctrine2将表格的排序设置为utf8_general_ci?
答案 0 :(得分:1)
之前我在Symfony报告了一个Bug,后来转到了Doctrine。 @ elliot提到problem in create database。
所以在这种情况下,我猜这个bug仍然存在。因此,您希望使用utf-8手动创建数据库,然后它将执行其他工作。
但根据Benjamin Eberlei的说法,他提到了MySQL的postConnect事件监听器,称为'SET NAMES UTF-8'。他提到的DBAL链接已被破坏,否则我会调查它。
希望这有帮助
答案 1 :(得分:1)
如果您使用注释,请使用以下代码设置排序规则,引擎和字符集:
/**
* @ORM\Table(name="temporary", options={"collate"="utf16_latin_ci", "charset"="utf16", "engine"="MyISAM"})
* @ORM\Entity
*/
对于yml文件,它是相同的。