我正在尝试从Symfony 4中的Entity创建数据库。但是,结果是:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
我知道这是因为它想使用utf8mb4字符集和utf8mb4_unicode_ci排序规则。我想将我的doctrine.yaml文件替换为utf8和utf8_unicode_ci以及:
@ORM\Table(name="users", options={"collate"="utf8_unicode_ci", "charset"="utf8", "engine"="MyISAM"})
但是它仍在尝试使用utf88mb4。如何强制它使用utf8?
好的,我找到了答案,所以基本上我有很多迁移文件,而php一直在尝试使用旧配置创建数据库。为了正确创建它,我删除了Migrations目录并使用了
php bin/console doctrine:cache:clear-metadata
。
这有所帮助,现在创建者使用了新配置。
不幸的是,这不是一个完整的答案。Symfony迁移生成的SQL代码遇到相同的问题,但是我直接在数据库上运行该代码。我认为教义有一个潜在的问题。