每当我创建一个新的Entity
,其属性类型为string
时,每当我希望更新数据库时,我都会收到错误:
SQLSTATE[42000]:语法错误或访问冲突:1071指定的键太长;最大密钥长度为767字节
现在这是很多人都面临过的问题,原因是described here。我知道我的问题是什么,我可以通过给出属性@ORM\Column(type="string", length=191)
来解决它。
我必须为我的schema中的每一个string type
设置长度为191。有没有什么方法可以在(doctrine)配置文件中将字符串的默认长度设置为191,这样我就不必每次都更改它?
我不希望更改为utf8。
2条答案
按热度按时间s4n0splo1#
对于Symfony 6+,以下代码可能会有所帮助。只需在doctrine_migrations.yaml中设置迁移名称列的长度:
7bsow1i62#
在Symfony 2.7+中,您可以为Doctrine的loadClassMetadata事件注册EventListener,方法如下:
“AsDoctrineListener”属性将注册事件侦听器,在
loadClassMetadata
方法中,您将设置/覆盖所有已定义的字符串列的尺子,而不设置尺子。如果尺子大于给定的$defaultStringLength
,则覆盖先前的尺子。如果您使用的是较低版本的Symfony,您可以使用老式的方式注册事件侦听器,使用
services.yaml
。所有变体都在这里有很好的文档记录:https://symfony.com/doc/current/doctrine/events.html