将mysql列编码从latin1_swedish_ci更改为二进制

时间:2013-09-24 21:58:38

标签: mysql encoding dataset

我目前有一个包含varchar(16)latin1_swedish_ci列的表,目前只有字母和数字([a-zA-Z0-9]),我想将其类型更改为char(16)及其编码为二进制。

我会丢失数据吗?或者这个字符集可以映射到二进制?

由于

1 个答案:

答案 0 :(得分:0)

只需运行一些查询来测试它。

创建一个测试表LIKE旧表

CREATE TABLE database.test LIKE database.your_table; 

将your_latin1_varchar_column更改为二进制字符

ALTER TABLE database.your_table MODIFY your_latin1_varchar_column char(16) CHARACTER SET binary;

将您的数据复制到新表中,并确保哪些地方没有关于数据字符串编码的警告会因截断而丢失

INSERT INTO database.your_table SELECT * FROM database.test;
SHOW WARNINGS;

请注意上面的INSERT INTO ...查询在包含许多记录的大型表格上可能会很慢