当我从 tbl_class 表中查询时,我遇到了非常奇怪的错误。
COLLATION 'utf8_general_ci' 对 CHARACTER SET 'utf8mb4' 无效
这是查询
SELECT CONCAT(SUBSTRING_INDEX(ac.class_group_name, ';', 1), '/'),
ac.class_upper_class_id INTO return_path,
parent_id
FROM tbl_class AS ac
WHERE ac.class_id = category_id
and ac.class_org_group_code = org_group_code collate utf8_general_ci;
my.cnf 就像
[mysqld]
character-set-server=utf8
collaction-server=utf8_general_ci
show variables like '%character%'
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
列的排序规则就像
+------------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+-----------------------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+------------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+-----------------------+
| class_id | int(11) | NULL | NO | PRI | 0 | | select,insert,update,references | |
| class_kind | varchar(1) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| class_upper_class_id | int(11) | NULL | YES | | NULL | | select,insert,update,references | |
| class_org_group_code | varchar(10) | utf8_general_ci | NO | PRI | | | select,insert,update,references | |
| class_group_code | varchar(50) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
表的字符集就像
KEY `tbl_class_idx2` (`class_org_group_code`,`class_upper_class_id`,`class_kind`,`class_order_no`),
KEY `tbl_class_idx3` (`class_org_group_code`,`class_group_code`),
KEY `tbl_class_idx4` (`class_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
我重新启动了mysql,但发生了同样的错误。而且根本没有utf8mb4。为什么?