ユーザーのメディア設定で日本語を含むメディア名が使用できない

Forumにはいつもお世話になっております。

1.4.6-1JPから1.6.8-1JPにアップグレードしたところ、ユーザーに設定していたメディアが消えてしまいました。
再度設定しようとしたところ、次のエラーが発生し設定できませんでした。
Warning. Incorrect value for [sendto]

設定しようとしたメディア名は、「日本語メール送信」というものでしたので、メディア名を「sendmessage_perl」に変更したところ、問題なく設定できました。

1.4.6-1JPでは、ユーザーのメディアn日本語を含むメディア名が設定できたのですが、1.6.8-1JPでは設定できないのは、バグなのでしょうか、それとも仕様なのでしょうか。

何か情報がありましたら、教えていただけますか。
宜しく御願致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

アップグレード環境ではなく1.6.8-1.JPの新規導入環境であれば、メディア名に日本語を入力しても大丈夫でした。
関係すると思われるのは、データベースのcharacter setなど、文字コード設定関連かもしれません。

データベースのcharacter setがutf8であるかを確認して頂けますか?

ちなみに、私は、/etc/my.cnfに以下のような設定を追記しています。
<code>
[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
</code>

また、私が作成した環境では、mysqlコマンドを利用して確認すると以下のような状態になっています。

<code>
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)
</code>

ユーザー miko の写真

御回答頂き有難うございました。

TNKさんは書きました:
関係すると思われるのは、データベースのcharacter setなど、文字コード設定関連かもしれません。

データベースのcharacter setがutf8であるかを確認して頂けますか?

ちなみに、私は、/etc/my.cnfに以下のような設定を追記しています。

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

/etc/my.cnfを確認したところ、[mysql]部分ではutf8に設定していましたが、[mysqld]では設定していませんでした。

また、私が作成した環境では、mysqlコマンドを利用して確認すると以下のような状態になっています。

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)

DBを確認したところ、character_set_server が latin1 になっていました。

/etc/my.cnfの[mysqld]に提示していただきました設定を行い、DBの character_set_server が utf8 になりました。
この状態で、ユーザーへのメディア設定に日本語を含むメディア名を指定したところ、問題なく設定が出来ました。

監査ログや日本語グループ名が文字化けしたので、以前のcharacterセットでエクスポートしたデータをインポートしなおしたのですが、同じように文字化けしたままとなってしまいました。

こちらはもう少し調べてみることにします。
有難うございました。

ユーザー TNK の写真

以前のデータベースは、character setがlatin1でしたか?
そして、バックアップにはmysqldumpを利用されましたか?

そうであるならば、そのダンプされたファイルの中身が読めるか確認してみてください。
きちんと日本語が読めるようであれば、その中にcharacter setを「latin1」などに指定する設定がありませんか?
その部分を「utf8」に変更したファイルを利用してリストアすれば大丈夫かもしれません。

もし、ダンプファイル内の文字が読めない場合は、ファイルの文字コードをutf8に変換して、変換したファイルを利用してリストアしてみてはいかがでしょうか?
ただ、上と同様にcharacter setの指定が無いか確認することを忘れないで下さい。

万が一の時のため、ダンプファイルを編集する際には、きちんと原本は残したままにし、コピーしたファイルを編集するようにしてください。

ユーザー miko の写真

御回答頂き有難うございました。

TNKさんは書きました:
以前のデータベースは、character setがlatin1でしたか?
そして、バックアップにはmysqldumpを利用されましたか?

そうであるならば、そのダンプされたファイルの中身が読めるか確認してみてください。
きちんと日本語が読めるようであれば、その中にcharacter setを「latin1」などに指定する設定がありませんか?
その部分を「utf8」に変更したファイルを利用してリストアすれば大丈夫かもしれません。

もし、ダンプファイル内の文字が読めない場合は、ファイルの文字コードをutf8に変換して、変換したファイルを利用してリストアしてみてはいかがでしょうか?
ただ、上と同様にcharacter setの指定が無いか確認することを忘れないで下さい。

万が一の時のため、ダンプファイルを編集する際には、きちんと原本は残したままにし、コピーしたファイルを編集するようにしてください。

ZABBIXのDB作成は create database zabbix default character set utf8; にて行いましたので、show variables で確認すると character_set_database は utf8 でした。

mysqldumpにてバックアップを取得していましたが、内容を確認したところ文字化けをしていました。
今までバックアップとインポートは問題なく行えていましたが、mysqlが同じ設定だったため文字コードも同じ設定となり問題がおきなかったようです。

mysqldumpでcahr設定を行っていなかったので、デフォルトのutf8でバックアップが行われ、latin1とで文字化けを起こしていたと思われます。
このため、mysqldumpに --default-character-set=latin1 を付けることで、文字化けしないバックアップを取得することが出来ました。
バックアップデータを確認したところ、ZABBIXに関するものに latin1 は有りませんでした。

DBを再作成して、「ZABBIX1.6の日本語アラートメールの文字化け」を参考に /etc/my.cnfの[mysqld]に init_connect='SET NAMES utf8' を追加してインポートしましたが、文字化けとなりました。
このため、バックアップデータの /*!40101 SET NAMES latin1 */; を /*!40101 SET NAMES utf8 */; に変更しインポートしたところ、文字化けは起こりませんでした。

書き換えに関しては、viでは2G超のデータのため重く、下記URLを参考に perl -pi -e 's/latin1/utf8/' zabbixbackup.dump にて行いました。
http://www.goodpic.com/mt/archives2/2009/01/mysql_41_50mysq.html
ただし、全てのデータベースをバックアップしたファイルに対して行うと、インポート時に下記のエラーが発生するため、mysqldumpに --databases zabbix オプションを付けてZABBIXのDBだけ取得する必要がありました。
ERROR 1253 (42000) at line 446: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8'

これにより、日本語メールの送信、ユーザーのメディアへの日本語メディア名登録、それに伴うデータ移行を行うことが出来ました。

いろいろと教えていただき、有難うございました。