我正在使用Symfony和Doctrine来创建一个新项目。但是旧表的默认字符集与UTF-8不同。我的新表有UTF8 Charset。恢复.. 我有一个 DEFAULT CHARSET = latin1 的表和一个 UTF-8的新表。
UTF8 表与 latin1 表有关系。但我得到了下一个错误:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)));
String line;
while ((line = in.readLine()) != null) { // Line without line ending.
line = line.trim().replaceAll("\\s+", "\t");
System.out.println(line);
}
有一些方法可以在具有不同 CHARSET 的表之间创建外键吗? 或者,我可以用ORM级别来做吗?
答案 0 :(得分:3)
有一些方法可以在具有不同表的表之间创建外键 CHARSET?
在MySQL级别上没有没有。
外键和引用键中的对应列必须具有相似的数据类型。整数类型的大小和符号必须 是相同的。字符串类型的长度不必相同。对于 非二进制(字符)字符串列,字符集和排序规则 必须是相同的
来源:http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
答案 1 :(得分:2)
好的,有一种方法可以做到,但不是 SQL 级别。如果您可以删除表格中的关系,因为您使用的是条款,请尝试使用 ORM 级别进行关联。
就像这个例子一样
(故障单有一个用户且用户有一个故障单。一对一的关系):
class Ticket
{
/**
* @var \AppBundle\Entity\User
*
* @ORM\OneToOne(targetEntity="AppBundle\Entity\User")
* @ORM\JoinColumn(name="adeq_user", referencedColumnName="id")
*/
private $adeqUsers;
}
然后 Doctrine 为您建立关系,但表格是相同的,所以当您要求票证时,您将获得所属的用户。
无论db上的默认字符集