こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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 version5.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になっております。

宜しくお願いいたします。

投稿日時 - 2009-09-28 09:45:45

QNo.5325048

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

返信がおそくなりました。
こちらも特に変わった設定は行っていません。

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」コマンドで接続しましたが正常に日本語入力できました。

結局お力になれませんでしたが、これらの方法を試されてはいかがでしょうか。

投稿日時 - 2009-10-04 03:36:21

お礼

お忙しい中色々お調べして頂き誠にありがとうございました。
こちらでもrpmコマンドで確認してみたところそこまで変わったところが見つかりませんでした。

あえて違うところがReleaseデータぐらいでしょうか?
私の方では下記の情報でした。↓
Release : 3.el5 となっておりました。
上記の記録ですと『Release : jason.2』とjason?となっているぐらいでした。

こちらも調べてみましたがそんなに関係がなさそうでした。

他の関係者にも確認してみたのですが誰もわからないという状況でした。
でも、プログラムからはちゃんと日本語表示されているのでこのままで行こうと思います。
showコマンド、コピペはちゃんと表示されるので

本当にありがとうございました。

投稿日時 - 2009-10-04 23:10:23

ANo.3

当方もほぼ同じ環境(CentOS 5.3 MySQL5)ですが、再現しませんね。
ちょっと気になったのは、「ふしぎなことにメモ帳で書いたものを」と
いうところなんですが。
LinuxインストールしたマシンのGNOME端末で操作されていないんでしょうか。
もし、そうなら一度GNOME端末から実行してみてもらえませんか。
(この場合でもダブルクォートすると文字化け起きます)

投稿日時 - 2009-10-01 13:51:47

お礼

ご連絡ありがとうございます。

GUI環境での構築は考えておりませんでした。
同僚等に相談したところ、GUI環境等望んでないようです。
私としては試してみたかったのですが申し訳ございません。><

環境は、すべてCUI環境です。
遠隔でputtyで操作し、メモ帳でsql文を作成しputtyに貼り付けて作業を行いました。

昔は、ソースから構築していたので『--without-readline』オプションで指定していたのでよかったのですが、今回はyumでやったからでしょうか??
一応yum list | grep readline-devel等で確認したところ、インストールはされているです・・・。

同じ環境でも問題がないということなのでもし宜しければ他にどのような作業等をしたのか教えていただけると幸いです。

ありがとうございます。

投稿日時 - 2009-10-01 18:53:56

ANo.2

文字列を入力するさいにダブルクォートするのではなく、シングルクォート
してみてください。
insert into test values ( 1, "あああ" );

insert into test values ( 1, 'あああ' );

投稿日時 - 2009-09-29 23:35:23

お礼

ご連絡ありがとうございます。

シングルクォートでもやはり入力等は化けてしまいました。
mysql> insert into test (1,'▒▒▒▒▒▒▒▒▒▒▒▒');

ただ、十字キーの[↑]で過去のコマンドでみて見るとinsert等は文字化けしてませんでした。不思議です。????

これはシングル、ダブルどちらも同じでした。

ありがとうございます。

投稿日時 - 2009-09-30 08:54:44

ANo.1

コマンド入れる前に
set names utf8;
してください

投稿日時 - 2009-09-29 23:22:56

お礼

ご連絡ありがとうございます。

コマンド入れる前にset names utf8;してやってみましたが、やはり化けました。

ただ、こちらも同じで十字キーの[↑]で過去のコマンドを見るとちゃんと日本語が表示されておりました。

mysqlのコマンドラインでの入力??だけがおかしいっぽいです。

ありがとうございます。

投稿日時 - 2009-09-30 08:57:37

あなたにオススメの質問