MySQL 修改字符集

utf8是utf8mb4的子集,一般情况下,应该是可以直接修改表字符集的。

修改字符集的几种方法

方法一

  • 修改表默认字符集
    mysql> alter table j1 default character set utf8mb4;

  • 随后再修改所有字符型列的字符集
    mysql> alter table j1 modify name varchar(20) character set utf8mb4 not null default '';

方法二

  • 也是执行ALTER TABLE来修改,但有更简单的解法
    mysql> alter table j1 convert to character set utf8mb4;

方法三

  • 如果不放心,可以用mysqldump逻辑备份方式,用utf8mb4字符集把数据备份出来,新建表,恢复回去,应该也可以的。

区别

  • 采用方法一,如果遇到某个列字符集转换完后字节数超限了,会提示错误。
  • 而采用方法二,如果遇到某个列字符集转换完后字节数超限了,则会将这个列数据类型转换成可以容纳更大长度的类型,比如从 TEXT 转成 LONGTEXT 等。

结论

想从小字节数(2字节/3字节)字符集(gb2312、utf8)转换到大字节数(4字节)字符集(utf8mb4),是可以直接转换的。
相反,想从大字节数字符集转成小的,则会有风险,例如字符串被截断等。

你可能感兴趣的:(MySQL 修改字符集)