ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

更改mysql表编码时是否有任何不利影响?

2019-11-18 12:14:51  阅读:282  来源: 互联网

标签:encoding character-encoding special-characters mysql


我有一个用latin1编码并整理latin1_bin的表.

在我的表中有一个列类型为’TEXT’的列注释,您知道该列继承了表的编码和排序规则,但是从现在开始,我应该将其更改为utf8和utf8_general_ci,因为我开始在注释中存储特殊字符.

如果我使用类似以下的命令,会导致任何负面影响吗?

alter table notebooks modify comments text CHARACTER SET utf8 COLLATE utf8_general_ci;

谢谢您的回答.

解决方法:

危险,我认为ALTER会破坏现有文本.

另外,…您的“名字”看起来是中文,所以我猜您想存储中文字符吗?在这种情况下,您应该使用utf8mb4,而不仅仅是utf8.这是因为某些中文字符占用4个字节(并且不在Unicode BMP中).

我相信您需要2个步骤:

ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

否则,latin1字符将被“转换”为ut8.但是,如果您的栏中确实有中文,那么您就不需要latin1.上面的两步更改确实(1)关闭了字符集的任何知识,并且(2)确定字节确实是utf8mb4编码的.

为了更安全,首先

RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

然后执行两个ALTER,并测试结果.如果遇到问题,您可以重命名以恢复旧副本.

标签:encoding,character-encoding,special-characters,mysql
来源: https://codeday.me/bug/20191118/2028157.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有