我正在尝试将我的数据库中的表中的特定列从latin1字符集转换为coltin latin1_swedish_ci到utf8并使用collation utf8_unicode_ci。
COLUMN:description,type:longtext,default not null
我在列上尝试了以下命令:
ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ;
ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci;
我还试图改变编码,而不是先改为二进制。但是这些角色最终被服务器错误地重新编码。
并且在某些字符上出现错误:
错误代码:1366。字符串值不正确:' \ x92t hav ...'对于列' longDesc'在第803行
我桌上的某些角色似乎没有正确转换。
如何解决此问题?
答案 0 :(得分:1)
\ x92表示你现在表中有latin1。第二个ALTER是声明字节是utf8编码。因此,错误消息。
案例1:您需要将LONGTEXT更改为utf8,因为您计划添加包含无法在latin1中编码的文本的行。
对于这种情况,ALTER TABLE sample CONVERT TO CHARACTER SET utf8;
- 转换表中的所有CHAR / TEXT列。
ALTER TABLE sample MODIFY description ... CHARACTER SET utf8;
- 转换一列。
案例2:系统的其余部分正在考虑utf8并且对此专栏感到困惑。
好吧,我不认为它很困惑。根据需要进行转换。