新装的zabbix,导入模板或者新建群组时,用到中文保存时会报错。
如下:
–Error in query [SELECT usrgrpid,name FROM usrgrp WHERE name='运维组' LIMIT 1] [Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=']
–Error in query [INSERT INTO usrgrp (name,users_status,gui_access,debug_mode,usrgrpid) VALUES ('运维组','0','0','0','13')] [Incorrect string value: '\xE8\xBF\x90\xE7\xBB\xB4...' for column 'name' at row 1]
–SQL描述式执行已失败: "INSERT INTO usrgrp (name,users_status,gui_access,debug_mode,usrgrpid) VALUES ('运维组','0','0','0','13')".
通过报错可以看出是sql执行出错,报错描述Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)
可以看出是数据库字符集的问题。
解决方法如下:
1、去zabbix数据库主机查看数据库字符集。
show variales like '%char%';
可以看到 character_set_database
和character_set_server
的字符集都不是utf8的所以需要进行设置。
2、修改数据库配置文件(默认在/etc/my.cnf
),增加如下配置:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server = utf8
重启数据库
3、登录后再次执行show variables like '%char%';
结果都是utf8了,如下:
4、重新导入zabbix数据模型。
# mysql -uzabbix -ppassword zabbix < schema.sql
# mysql -uzabbix -ppassword zabbix < images.sql
# mysql -uzabbix -ppassword zabbix < data.sql
再次添加后就可以啦。
所以大家最好在最初搭建zabbix数据库时加上这个参数,避免发生这样的问题。