数据库中有大量数据的表的一半设置为拉丁语1。在这些拉丁1表中,如果行需要文本输入(任何非整数),则大多数行被设置为utf8。
一切都是用英语写的。
如果我需要将这些拉丁文1表转换为utf8,情况会有多糟?
发布于 2019-08-05 17:55:14
首先,澄清一下:您说“大多数行设置为utf8";我假设您的意思是”大多数列设置为utf8"?
表上的latin1的含义只是一个缺省值。它对性能等没有影响。
如果您在不指定ALTER TABLE .. ADD COLUMN ..的情况下执行CHARACTER SET utf8,那么唯一的“危害”会发生。
你说所有的课文都是英语?然后,latin1和utf8之间没有编码差异。如果你有重音字母等,问题就会发生。
有一个性能问题:如果您将两个表放在一个JOIN列上,但是该列在两个表中的CHARACTER SET或COLLATION不同,则会比这些设置相同时慢。(听起来你没有这个问题。)同样,请注意,表的默认设置与此无关,只涉及列设置本身。
是的,将表默认设置为utf8会更“干净”。这应该是一种在不倾销的情况下做到这一点的方法,但通过一次一次地更改表:
ALTER TABLE t CONVERT TO CHARACTER SET utf8;这将更改表的默认值和任何尚未成为utf8的列。
发布于 2019-08-05 10:29:21
mysqldump
https://stackoverflow.com/questions/57356206
复制相似问题