SQL 将列从 Latin1 转换为 UTF8
SQL converting column from Latin1 to UTF8
我正在尝试将我数据库中 table 中的特定列从排序规则 latin1_swedish_ci 的 latin1 字符集转换为排序规则 utf8_unicode_ci.
的 utf8
COLUMN:描述,类型:longtext,默认不为空
我在列上尝试了以下命令:
ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ;
ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci;
我还尝试在不先更改为二进制的情况下更改编码。但是字符最终被服务器错误地重新编码。
并且不断收到关于某些字符的错误:
Error Code: 1366. Incorrect string value: '\x92t hav...' for column 'longDesc' at row 803
我的 table 中的某些字符似乎没有正确转换。
我该如何解决这个问题?
\x92 表示您在 table 现在 中有 latin1。第二个 ALTER 是 声称 字节是 utf8 编码。因此,错误消息。
情况 1:您需要将 LONGTEXT 更改为 utf8,因为您计划添加包含不能用 latin1 编码的文本的行。
对于这种情况,ALTER TABLE sample CONVERT TO CHARACTER SET utf8;
-- 转换 table 中的所有 CHAR/TEXT 列。
ALTER TABLE sample MODIFY description ... CHARACTER SET utf8;
-- 转换一列。
情况2:系统其余部分正在思考utf8,被本专栏搞糊涂了。
嗯,我觉得不糊涂。转换会根据需要发生。
我正在尝试将我数据库中 table 中的特定列从排序规则 latin1_swedish_ci 的 latin1 字符集转换为排序规则 utf8_unicode_ci.
的 utf8COLUMN:描述,类型:longtext,默认不为空
我在列上尝试了以下命令:
ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ;
ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci;
我还尝试在不先更改为二进制的情况下更改编码。但是字符最终被服务器错误地重新编码。
并且不断收到关于某些字符的错误:
Error Code: 1366. Incorrect string value: '\x92t hav...' for column 'longDesc' at row 803
我的 table 中的某些字符似乎没有正确转换。
我该如何解决这个问题?
\x92 表示您在 table 现在 中有 latin1。第二个 ALTER 是 声称 字节是 utf8 编码。因此,错误消息。
情况 1:您需要将 LONGTEXT 更改为 utf8,因为您计划添加包含不能用 latin1 编码的文本的行。
对于这种情况,ALTER TABLE sample CONVERT TO CHARACTER SET utf8;
-- 转换 table 中的所有 CHAR/TEXT 列。
ALTER TABLE sample MODIFY description ... CHARACTER SET utf8;
-- 转换一列。
情况2:系统其余部分正在思考utf8,被本专栏搞糊涂了。
嗯,我觉得不糊涂。转换会根据需要发生。