Answers:
没必要 只需使用SELECT CONVERT(column USING utf8) FROM
.....而不是SELECT column FROM
...
我遇到了同样的问题,这是我的解决方案:
ALTER TABLE mytable ADD COLUMN field1_new TEXT NOT NULL, ADD COLUMN field2_new TEXT NOT NULL; update mytable set field1_new = CONVERT(field1 USING utf8), field2_new = CONVERT(field2 USING utf8); alter table mytable drop column field1, drop column field2; alter table mytable change column field1_new field1 text, change column field2_new field2 text;
您可以轻松完成。
ALTER TABLE `table_name` CHANGE COLUMN `column_name` `column_name` LONGTEXT NULL DEFAULT NULL ;
上面的查询对我有用。希望对您有帮助。
这些答案都不对我有用。转换为UTF8时,如果编码器遇到一组字节,则无法转换为UTF8,则将导致?替换会导致数据丢失。您需要使用UTF16:
SELECT
blobfield,
CONVERT(blobfield USING utf16),
CONVERT(CONVERT(blobfield USING utf16), BINARY),
CAST(blobfield AS CHAR(10000) CHARACTER SET utf16),
CAST(CAST(blobfield AS CHAR(10000) CHARACTER SET utf16) AS BINARY)
您可以在MySQL Workbench中检查二进制值。右键单击字段->在查看器中打开值->二进制。当转换回BINARY时,二进制值应与原始值相同。
或者,您可以仅使用为此目的而设计的base-64:
SELECT
blobfield,
TO_BASE64(blobfield),
FROM_BASE64(TO_BASE64(blobfield))
SELECT CONVERT(column USING utf8) FROM table;