mysql报错 illegal mix of collations
报错demo
- 首先创建数据库。
1 | CREATE SCHEMA `tmp` DEFAULT CHARACTER SET utf8 COLLATE utf8_danish_ci ; |
- 接下来创建表A。
1 | CREATE TABLE IF NOT EXISTS `tmp`.`A`( |
接着创建表B。
1 | CREATE TABLE IF NOT EXISTS `tmp`.`B`( |
异常查询。
1 | use tmp; |
出现这个错的原因是相等的两个字段字符集不统一的问题。为了确认这一问题,我们来查看数据库字符集编码.
1 | -- 查看MYSQL数据库服务器和数据库字符集 |
解决方案
- 修改数据库字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
- 把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
- 修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
- 修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];