Dav*_*542 0 mysql sql utf-8 character-encoding
我有一张名为provider. 在provider表中,我有一列名为provider. 该列的字符编码目前为latin1:
`provider` varchar(60) CHARACTER SET latin1 NOT NULL DEFAULT '',
Run Code Online (Sandbox Code Playgroud)
其他几个表FKprovider.provider也参考。我将如何更改编码utf8并将所有更改级联到外键引用?相当于:
ALTER TABLE provider MODIFY
provider VARCHAR (60)
CHARACTER SET utf8
COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
但是对于 FK 也引用它的所有列。(注意:根据自己的错误执行上述操作。)
您不能级联 ALTER TABLE 更改。你需要分别做每张桌子。手册指出外键引用的字符集和排序规则必须相同。因此,如果您只是在更改子表(或副表)之前尝试更改父表的排序规则,MySQL 将抱怨一个可怕的模棱两可的错误(errno 150)。因此,您必须在更改表之前禁用外键检查:
SET foreign_key_checks = 0;
-- 做改变 --
SET foreign_key_checks = 1;
应该管用。
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |