Symfony 4 SQLSTATE[42000] 指定的键太长

Jan*_*ala 10 mysql orm utf-8 symfony doctrine-orm

我正在尝试从 Symfony 4 中的实体创建数据库。但是结果是:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

我知道这是因为它试图使用 utf8mb4 字符集和 utf8mb4_unicode_ci 排序规则。我已经尝试将我的 Doctic.yaml 文件替换为 utf8 和 utf8_unicode_ci 以及:

@ORM\Table(name="users", options={"collate"="utf8_unicode_ci", "charset"="utf8", "engine"="MyISAM"})
Run Code Online (Sandbox Code Playgroud)

但它仍在尝试使用 utf88mb4。如何强制它使用 utf8?

小智 7

嗨,我得到同样的错误: SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

我通过将长度更改为 191 来修复它,如下所示: @ORM\Column(type="string", length=191, unique=true)


Jan*_*ala 0

好的,我找到了答案,所以基本上我有很多迁移文件,并且 php 不断尝试使用旧配置创建数据库。为了正确创建它,我删除了 Migrations 目录并使用

php bin/console doctrine:cache:clear-metadata

这很有帮助,现在创建者使用了新的配置。