通常,在将字符串插入具有不兼容编码/排序规则的列时会发生这种情况。
当我有触发器时,我得到了这个错误,触发器由于某种原因继承了服务器的排序规则。
mysql的默认值是(至少在ubuntu上)拉丁文-1,带有瑞典语排序规则。
尽管我已经将数据库和所有表设置为utf-8,但我还没有设置
my.cnf
:
/etc/mysql/my.cnf版本:
[mysqld]
character-set-server=utf8
default-character-set=utf8
必须列出所有带utf8-*的触发器:
select TRIGGER_SCHEMA, TRIGGER_NAME, CHARACTER_SET_CLIENT, COLLATION_CONNECTION, DATABASE_COLLATION from information_schema.TRIGGERS
其中列出的一些变量也应该有utf-8-*(没有拉丁语-1或其他编码):
show variables like 'char%';