我目前有一个表,其中有一列 varchar(16) latin1_swedish_ci 目前只有字母和数字([a-zA-Z0-9]),我想将其类型更改为 char(16) 并将其编码更改为二进制.
我会丢失数据吗?或者这个字符集可以映射到二进制?
谢谢
只需运行一些查询来测试它。
像旧表一样创建一个测试表
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... 查询在包含许多记录的大表上可能会很慢