このスレッドはクローズされています。記事の閲覧のみとなります。
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 の状態になっているものが文字化けしていないようです。ここまでは分かったのですが、さて・・・ここからどう設定すればいいのでしょう。
|
■ その他