0

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

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

谢谢

4

1 回答 1

0

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

像旧表一样创建一个测试表

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... 查询在包含许多记录的大表上可能会很慢

于 2013-09-24T22:51:03.103 回答