我得到了一个像这样的字段的实体:
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
但是,如果我试图修改名称从“测试”到“测试”的错误,我得到一个错误,这个名字已经被采取!知道为什么会这样吗?一个独特的索引案例是否具有影响力?
解决方法:
你的问题是因为你有utf8_general_ci整理注意_ci这意味着不区分大小写,反过来这意味着数据库对待“Test”,“test”,“TEst”等相同.
您必须手动将数据库中的列排序规则更改为utf8_bin,或者更改为utf8_xxx_cs(其中xxx是语言名称),如果您碰巧拥有所需语言的列排序规则.
来自Doctrine ORM FAQ:
4.1.1. How do I set the charset and collation for MysqL tables?
You can’t set these values inside the annotations, yml or xml mapping
files. To make a database work with the default charset and collation
you should configure MysqL to use it as default charset, or create the
database with charset and collation details. This way they get
inherited to all newly created database tables and columns.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。