- 締切済み
mysqlコマンドラインのことで・・・・
はじめまして。 今、LinuxのCentOSでmysqlをインストール(yumで)しコマンドラインでデータベースを作成し、insert文で日本語を入力したのですが、なぜか文字化け?をしてしまう現象が起きております。 いろいろ調べた結果どうやらダブルクウォートとか()で囲むとばけるみたいです。 現象) mysql> insert into test (1,"聽聽聽・ ") ※本来は↓ mysql> insert into test (1,"あああああああ"); でも、ふしぎなことにメモ帳で書いたものを貼り付けると文字化けはせず、正常うまくいきshow コマンドでデータを見ることができます。 他にもデータベース名を日本語にしてもうまくいきます。 mysql> create database あああああ; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | あああああ | +--------------------+ 4 rows in set (0.00 sec) ちゃんと消すこともできます。 insertだったり、updateなどでデータ(””や()で囲むと?駄目?)をコマンドラインで更新すると化けてしまいます。 もしお分かりになる方がいらっしゃいましたら宜しくお願いします。 ■サーバ情報 Linux CentOS 5.3(final) カーネル 2.6.18-164.el5 MySQL version 5.0.77 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.06 sec) ■my.cnfの設定 [client] default-character-set = utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysql] default_character_set = utf8 ※関係ないと思いますが一応i18nの設定も cat /etc/sysconfig/i18n LANG="ja_JP.UTF-8" SUPPORTED="ja_JP.UTF-8:ja_JP:ja" SYSFONT="latarcyrheb-sun16" ※ターミナル設定もutf8になっております。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
返信がおそくなりました。 こちらも特に変わった設定は行っていません。 MySQLとreadlineのインストール情報です。 $ rpm -qi mysql Name : mysql Relocations: (not relocatable) Version : 5.0.86 Vendor: (none) Release : jason.2 Build Date: 2009年09月29日 00時41分06秒 Install Date: 2009年09月30日 05時22分02秒 Build Host: CentOS5-32-VM.XoxideInc.local Group : Applications/Databases Source RPM: mysql-5.0.86-jason.2.src.rpm Size : 14347733 License: GPLv2 with exceptions Signature : DSA/SHA1, 2009年09月29日 00時41分14秒, Key ID 4d7c274d0d4306ef URL : http://www.mysql.com Summary : MySQL のクライアントプログラムと共有ライブラリ。 Description : MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. The base package contains the MySQL client programs, the client shared libraries, and generic MySQL files. $ rpm -qi readline Name : readline Relocations: (not relocatable) Version : 5.1 Vendor: CentOS Release : 1.1 Build Date: 2007年01月10日 04時30分34秒 Install Date: 2009年04月26日 20時16分09秒 Build Host: builder6.centos.org Group : System Environment/Libraries Source RPM: readline-5.1-1.1.src.rpm Size : 344561 License: GPL Signature : DSA/SHA1, 2007年04月04日 09時27分20秒, Key ID a8a447dce8562897 URL : http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html Summary : 入力されたコマンドラインを編集するためのライブラリ Description : Readline ライブラリは、ユーザーが入力した通りのコマンドラインをユーザーが 編集できるようにするアプリケーションにおいて使用することのできる機能の セットを提供します。編集モードとして Emacs と vi を使用することができます。 Readline ライブラリには、前に入力されたコマンドラインの一覧を保持 する機能、それらのラインを呼び出して再編集する機能、csh のような直前のコマンドに関する履歴展開機能などの追加機能が含まれています。 当方もでは「Puttyjp.exe」「teraterm」「Poderosa」とターミナルソフトを変えてみましたが再現しませんでした。 後、ためしにwindowsに「UTF-8 cygwin(http://www.okisoft.co.jp/esc/cygwin-20.html)」をインストールして、「ssh」コマンドで接続しましたが正常に日本語入力できました。 結局お力になれませんでしたが、これらの方法を試されてはいかがでしょうか。
- nora1962
- ベストアンサー率60% (431/717)
当方もほぼ同じ環境(CentOS 5.3 MySQL5)ですが、再現しませんね。 ちょっと気になったのは、「ふしぎなことにメモ帳で書いたものを」と いうところなんですが。 LinuxインストールしたマシンのGNOME端末で操作されていないんでしょうか。 もし、そうなら一度GNOME端末から実行してみてもらえませんか。 (この場合でもダブルクォートすると文字化け起きます)
お礼
ご連絡ありがとうございます。 GUI環境での構築は考えておりませんでした。 同僚等に相談したところ、GUI環境等望んでないようです。 私としては試してみたかったのですが申し訳ございません。>< 環境は、すべてCUI環境です。 遠隔でputtyで操作し、メモ帳でsql文を作成しputtyに貼り付けて作業を行いました。 昔は、ソースから構築していたので『--without-readline』オプションで指定していたのでよかったのですが、今回はyumでやったからでしょうか?? 一応yum list | grep readline-devel等で確認したところ、インストールはされているです・・・。 同じ環境でも問題がないということなのでもし宜しければ他にどのような作業等をしたのか教えていただけると幸いです。 ありがとうございます。
- nora1962
- ベストアンサー率60% (431/717)
文字列を入力するさいにダブルクォートするのではなく、シングルクォート してみてください。 insert into test values ( 1, "あああ" ); ↓ insert into test values ( 1, 'あああ' );
お礼
ご連絡ありがとうございます。 シングルクォートでもやはり入力等は化けてしまいました。 mysql> insert into test (1,'▒▒▒▒▒▒▒▒▒▒▒▒'); ただ、十字キーの[↑]で過去のコマンドでみて見るとinsert等は文字化けしてませんでした。不思議です。???? これはシングル、ダブルどちらも同じでした。 ありがとうございます。
- gau_puzzler
- ベストアンサー率48% (39/81)
コマンド入れる前に set names utf8; してください
お礼
ご連絡ありがとうございます。 コマンド入れる前にset names utf8;してやってみましたが、やはり化けました。 ただ、こちらも同じで十字キーの[↑]で過去のコマンドを見るとちゃんと日本語が表示されておりました。 mysqlのコマンドラインでの入力??だけがおかしいっぽいです。 ありがとうございます。
お礼
お忙しい中色々お調べして頂き誠にありがとうございました。 こちらでもrpmコマンドで確認してみたところそこまで変わったところが見つかりませんでした。 あえて違うところがReleaseデータぐらいでしょうか? 私の方では下記の情報でした。↓ Release : 3.el5 となっておりました。 上記の記録ですと『Release : jason.2』とjason?となっているぐらいでした。 こちらも調べてみましたがそんなに関係がなさそうでした。 他の関係者にも確認してみたのですが誰もわからないという状況でした。 でも、プログラムからはちゃんと日本語表示されているのでこのままで行こうと思います。 showコマンド、コピペはちゃんと表示されるので 本当にありがとうございました。