gpt4 book ai didi

mysql - 改变 MySQL 列编码,级联到 FK

转载 作者:行者123 更新时间:2023-11-29 08:56:48 24 4
gpt4 key购买 nike

我有一个名为provider的表。在 provider 表中,我有一个名为 provider 的列。该列的字符编码目前为latin1:

`provider` varchar(60) CHARACTER SET latin1 NOT NULL DEFAULT '',

其他几个表 FK 也引用了 provider.provider。如何将编码更改为 utf8 并将所有更改级联到外键引用?相当于:

ALTER TABLE provider MODIFY
provider VARCHAR (60)
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

但是对于 FK 也引用它的所有列。 (注意:执行上述操作时会出现错误。)

最佳答案

您不能级联 ALTER TABLE 更改。您需要单独完成每个表。手册规定外键引用的字符集和排序规则必须相同。因此,如果您只是尝试在更改子表之前更改父表的排序规则(或反之亦然),MySQL 将提示一个可怕的模糊错误(errno 150)。因此,您必须在更改表之前禁用外键检查:

设置foreign_key_checks = 0;
-- 进行更改 --
设置foreign_key_checks = 1;

应该可以。

关于mysql - 改变 MySQL 列编码,级联到 FK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9762963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com