我得到了一个像这样的字段的实体:
/**
* @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.