はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 当サイト情報 >> スレッド

このページは表示専用です。新規投稿・レスや最新情報はこちらです。

このスレッドはクローズされています。記事の閲覧のみとなります。

 mysqlで2つめのデータベースが文字化けします
日時: 2009/10/16 10:57
名前: dgw

1.不明点・障害内容:

mysqlをインストールし、最初に作ったデータベースは問題なく動作しています。ただし、データベースを追加した場合、2つめのデータベースが文字化けを起こします。

2.ログの有無   :特になし
  (有:その内容) :
3.Distribution  :
      Version :

Fedora Core6およびCentOS5、データベースはmysql5の最新ヴァージョン

4.Service Name  :
      Version :
5.ネットワーク構成:

dgwと申します。自宅サーバーでFedora Core6を、別途さくらの専用サーバーでCentOS5を運用しています。どちらにも言えることなのですが、mysqlで1つのDBを作りサービスを運用していますが問題なく数年間動作しています。
しかし、それぞれのサーバーにDBを追加した場合、追加した2つめのデータベースが、それぞれ文字化けを起こします。

異なるサービスを提供したい(行く行くは別サーバーにしたい)ので、データベースを分けておきたいのですが、なぜか日本語が文字化けします。2つのDBに対して同じテーブルを作り、同じSQL文で試しにinsertしても最初のDBは問題なし、2つめは文字化けします。

Fedora Core6でもCentOS5でも起こっているため細かなヴァージョンの違いが原因ではないと考えています。
特にFedora Core6のサーバーは、ほぼこちらのサイトを参考にさせていただいています。

ググってみているのですが、それらしい記事などが出て来ないため困っています。
どなたか対処法をご存じの方がいらっしゃればご教授願えないでしょうか。宜しくお願いいたします。

■ コンテンツ関連情報

 Re: mysqlで2つめのデータベースが文字化けします ( No.1 )
日時: 2009/10/16 12:35
名前: 北千住の老人

defaultのcharacter setが違うのでは?
2つ目のDBをcreateするときに、1つ目と同じdefault character setを指定してみる。
それでもダメなら小生にはわかりません。
 Re: mysqlで2つめのデータベースが文字化けします ( No.2 )
日時: 2009/10/16 13:18
名前: dgw

北千住の老人様お世話になります。

ちなみに、2つのサーバーとも/etc/my.cnfの設定でキャラクターセットのデフォルトは以下のようにEUCに設定しています。
default-character-set=ujis

1つめのDBも作成する際には例えば「create databese hogehoge1」として、2つめも同じように「create database hogehoge2」としており、default character setの指定はしたことが無いのですが・・・。というか個別に指定する方法があるのですか?
 Re: mysqlで2つめのデータベースが文字化けします ( No.3 )
日時: 2009/10/16 14:09
名前: dgw

自己レスです。

北千住の老人様のご指摘を参考にググっておりましたら、以下の情報がありました。
http://www.ksknet.net/mysql/defaultcharacte.html

専用サーバーの方を確認してみましたら、
mysql> status;
--------------
mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

Connection id:     2
Current database:
Current user:      root@localhost
SSL:          Not in use
Current pager:     stdout
Using outfile:     ''
Using delimiter:    ;
Server version:     5.0.77 Source distribution
Protocol version:    10
Connection:       Localhost via UNIX socket
Server characterset:  ujis
Db   characterset:  ujis
Client characterset:  latin1
Conn. characterset:  latin1
UNIX socket:      /var/lib/mysql/mysql.sock
Uptime:         16 sec

Threads: 1 Questions: 4 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.250
---------------------------------------------------------------------------------
のように
Client characterset:  latin1
Conn. characterset:  latin1
となっております。これはFedora Core6の自宅サーバーも一緒です。

そこで、/etc/my.cnfに以下を追記してmysqlを再起動しました。
[client]
default-character-set=ujis

ところが、確認しましたところ
mysql> status;
--------------

Server characterset:  ujis
Db   characterset:  latin1
Client characterset:  ujis
Conn. characterset:  ujis

---------------------------------------------------------------------------------
となり、ClientとConnはujisに変更されたのですが
Db   characterset:  latin1
が変更されてしまいました。

データベースの書き込みはどうか?と確認しましたら、
2つめのDBの文字化けが解消されたのはいいのですが、今度は1つめのDBが文字化けしております。
1つめのDBは現在サービスしておりますので、設定をもとに戻しました。

状況がころころと変わって分かりづらいですが、すべての設定がujisに設定できれば良さそうなのですが
・・・
 Re: mysqlで2つめのデータベースが文字化けします ( No.4 )
日時: 2009/10/16 14:44
名前: 北千住の老人

/etc/my.cnfの [myqsl]セクションにdefault-character-setにujisを設定すると全部ujisになるかも。

[mysql]
default-character-set = ujis

サーバー側の文字設定は mysqldセクションらしいので[mysqld]セクションに
default-character-set = ujis
を入れる必要もあるかも。

でも(わかりませんが)すべてujisだと不便かもしれないので、DBをcreateするときにデフォルトの
文字セットを指定してもいいと思います。

>CREATE DATABASE DB名 DEFAULT CHARACTER SET ujis COLLATE ujis_japanese_ci;
のような感じにです。

以上ですが、正直あまりよく分からないので自己責任で。。。
 Re: mysqlで2つめのデータベースが文字化けします ( No.5 )
日時: 2009/10/16 14:45
名前: dgw

さらに自己レスですいません。

mysql -u root -pでmysqlに接続した状態とDBを選択した状態とでmysql> status;のcharactersetの値が変わっていることに気づきました。

mysqlに接続した状態では(DBは未選択)
mysql> status;
--------------

Server characterset:  ujis
Db   characterset:  ujis
Client characterset:  latin1
Conn. characterset:  latin1

--------------

ここからDBを選択すると(正常に日本語が反映されるDBの方)
mysql> status;
--------------

Server characterset:  ujis
Db   characterset:  latin1
Client characterset:  latin1
Conn. characterset:  latin1

--------------

そして、2つめのDBを選択した状態では(日本語が文字化けする方)
mysql> status;
--------------

Server characterset:  ujis
Db   characterset:  ujis
Client characterset:  latin1
Conn. characterset:  latin1

--------------

と、このように
Db   characterset:  latin1
の状態になっているものが文字化けしていないようです。ここまでは分かったのですが、さて・・・ここからどう設定すればいいのでしょう。
 Re: mysqlで2つめのデータベースが文字化けします ( No.6 )
日時: 2009/10/16 14:48
名前: 北千住の老人

>Db   characterset:  latin1
>の状態になっているものが文字化けしていないようです。ここまでは分かったのですが、さて・・・ここから>どう設定すればいいのでしょう。


でしたら、DBをcreate するときにlatin1を指定したらいいかもですね。
 Re: mysqlで2つめのデータベースが文字化けします ( No.7 )
日時: 2009/10/16 15:17
名前: dgw

北千住の老人様

先ほど(No4とNo5)は、ほぼ同時の書き込みですみませんでした。

さて、北千住の老人様のお知恵を借りながら以下のようにlatin1を指定してみました。
create database hogehogedb default character set latin1;

結果、見事に2つめのデータベースでも文字化けせずにデータを格納することができました。
status状態も以下のようになっています。
mysql> status;
--------------

Server characterset:  ujis
Db   characterset:  latin1
Client characterset:  latin1
Conn. characterset:  latin1

--------------

実はこれ、数年前から何気に悩んでいたのですが、後回しにしながら悶々としていた問題でした。

なぜ、character setをlatin1にしなければいけないのか想像もしていない結果ですがとりあえず結果オーライということで一安心です。

北千住の老人様、誠にありがとうございました。

■ その他

ページ先頭へ


Copyright(©)2004-2018 First home server construction. All Right Reserved.