我目前有一个包含varchar(16)latin1_swedish_ci列的表,目前只有字母和数字([a-zA-Z0-9]),我想将其类型更改为char(16)及其编码为二进制。
我会丢失数据吗?或者这个字符集可以映射到二进制?
由于
答案 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 ...查询在包含许多记录的大型表格上可能会很慢