如何在mysql表中更改列的字符编码

时间:2016-01-15 03:57:08

标签: mysql utf-8 character-encoding

我有一张包含数据的表格。我想更改其中一列的字符编码。目前该列似乎有两种编码。即使在更改之后,我也会看到相同的结果。

当前编码

mysql>   SELECT character_set_name FROM information_schema.`COLUMNS` 
    -> WHERE  table_name = "mytable"
    ->   AND column_name = "my_col";
+--------------------+
| character_set_name |
+--------------------+
| latin1             |
| utf8               |
+--------------------+
2 rows in set (0.02 sec)

更改编码(0行受影响)

mysql>   ALTER TABLE mytable MODIFY my_col LONGTEXT CHARACTER SET utf8;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

1 个答案:

答案 0 :(得分:0)

您可能有2行,因为它是两个不同数据库中的两个不同的表。

SELECT * ...代替SELECT character_set_name ...

如果mytable.my_col中没有值,则

ALTER TABLE mytable MODIFY my_col LONGTEXT CHARACTER SET utf8;仅安全

声明为latin1,并包含latin1 bytes 的表可以通过

转换为utf8
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;