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,被本专栏搞糊涂了。

嗯,我觉得不糊涂。转换会根据需要发生。