不同字符集之间的外键不能工作。
我用Symfony和Doctrine来做一个新的项目。但是旧表的默认字符集与UTF-8不同。我的新桌子有UTF8字符集。恢复..。我有一个带有默认字符集= latin1的表和一个UTF-8.中的新表。
UTF8表与latin1表有关系。但我得到了下一个错误:
MySQL: Error 1005; Can't create table (errno: 150)有一些方法可以在具有不同字符集的表之间生成外键吗?或者,我能用ORM水平来做吗?
发布于 2017-11-08 13:09:10
有一些方法可以在不同字符集的表之间生成外键吗?
在MySQL级别上,不存在。
外键和引用键中的对应列必须具有类似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不一定相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。
来源:http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
发布于 2017-11-08 13:15:50
当然,有一种方法可以做到这一点,但并不是在SQL级别。如果由于使用Doctrine而可以删除表中的关系,请尝试在ORM级别上保持关系。
就像这个例子
(票证有一个用户,用户有一个票证。(一对一关系):
class Ticket
{
/**
* @var \AppBundle\Entity\User
*
* @ORM\OneToOne(targetEntity="AppBundle\Entity\User")
* @ORM\JoinColumn(name="adeq_user", referencedColumnName="id")
*/
private $adeqUsers;
}然后Doctrine get为您创建关系,但是表是相同的,所以当您要求一张票时,您将得到属于它的用户。
与db上的默认字符集无关
https://stackoverflow.com/questions/47180387
复制相似问题