zabbixで入力した日本語が文字化けするときの対処方法
移転しました。
自動的にリダイレクトします。
ubuntuのaptパッケージで1.6から1.8にアップグレードしたことが原因か定かではありませんが、mysqlのデータベースエンコードがutf8にならないため文字化けが発生してしまいました。
ホストのプロファイルにある備考や発生した障害にコメントを登録するとすべて"?"に文字化けしてしまいます。
データベースのバックアップ
以前に使ったmysqlhotcopyでバックアップを取ります。
http://d.hatena.ne.jp/ksaito11/20100522
データベースのエンコード変更
なぜか、character_set_databaseがlatin1になってる。
$ mysql -u root -p zabbix mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql>
デフォルトのキャラクタセットを変更する。
ysql> alter database zabbix default character set utf8; Query OK, 1 row affected (0.00 sec) mysql> show variables like "char%"; +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql>
確認
ZabbixのWebインタフェースでホストのプロファイルにある備考に日本語を入力して保存ボタンを押すと文字化けせずに格納されました。(すばらしい)
追加
テーブルにもcharsetがあります。
mysql> show create table zabbix.history_log; +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | history_log | CREATE TABLE `history_log` ( `id` bigint(20) unsigned NOT NULL DEFAULT '0', `itemid` bigint(20) unsigned NOT NULL DEFAULT '0', `clock` int(11) NOT NULL DEFAULT '0', `timestamp` int(11) NOT NULL DEFAULT '0', `source` varchar(64) NOT NULL DEFAULT '', `severity` int(11) NOT NULL DEFAULT '0', `value` text NOT NULL, `logeventid` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `history_log_2` (`itemid`,`id`), KEY `history_log_1` (`itemid`,`clock`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> alter table zabbix.history_log charset=utf8; Query OK, 8444 rows affected (1.96 sec) Records: 8444 Duplicates: 0 Warnings: 0 mysql> show create table zabbix.history_log; +-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | history_log | CREATE TABLE `history_log` ( `id` bigint(20) unsigned NOT NULL DEFAULT '0', `itemid` bigint(20) unsigned NOT NULL DEFAULT '0', `clock` int(11) NOT NULL DEFAULT '0', `timestamp` int(11) NOT NULL DEFAULT '0', `source` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '', `severity` int(11) NOT NULL DEFAULT '0', `value` text CHARACTER SET latin1 NOT NULL, `logeventid` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `history_log_2` (`itemid`,`id`), KEY `history_log_1` (`itemid`,`clock`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql>