ブログ ひまつぶし

バイクとシモネタが好きなへっぽこプログラマのおバカなブログ。

MacでMySQL 文字化け発生

2013-12-05 17:29:25 | 言語・DB・開発その他
MacでMySQL 文字化けをなおす(解決編)はこちら


博士「ま、待て!!止めるんじゃ!!無抵抗なワシを撃つというのか!?」
博士「ワシは丸腰なんじゃぞ!!」
助手「博士!!それは丸腰じゃなくてフリチンです!丸見えです!!チン・・・」
博士「ああ!言うんじゃない!!それを言ってしまうと、このブログのアクセス解析の検索ワードが大変なことになるのじゃ!!」
外人「No~~~ッ!!丸腰ナンテ嘘デ~ス!!ソノ股間のワルサーP38ハナンデスカ!!」
博士「いやこれは拳銃ではなくて!ちん・・・」
助手「駄目です博士!!その単語を口にしたら、このブログのアクセス解析の検索ワードが!!」
(つづく)


むぅっ!!
本の付録CDのSQLを流して学習環境を整えようと思ったけれど、MacBook Airに光学ドライブがないので、SQLが流せないではないか!!
・・・・。


と思ったけどCD-ROMをWindowsパソコンに入れて、SQLファイルをUSBメモリに移してからMacBook Airに移し替えたらいいんだ。

でやってみた。
----------------------------------------------------------------
ucchanx$ /usr/local/mysql/bin/mysql -u root -p
Enter password:

(中略)

mysql> use study; ←使用するデータベースを指定
Database changed

↓SQLファイルを指定して読み込む(「source」を入力し、SQLファイルのアイコンを端末にドラッグ&ドロップ)
mysql> source /Users/ucchanx/Desktop/school.sql

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

(中略)

ERROR 1366 (HY000): Incorrect string value: '\x97\x9D\x8E\x96\x92\xB7' for column 'YAKUSHOKUMEI' at row 1
ERROR 1366 (HY000): Incorrect string value: '\x8DZ\x92\xB7' for column 'YAKUSHOKUMEI' at row 1
ERROR 1366 (HY000): Incorrect string value: '\x8B\xB3\x93\xAA' for column 'YAKUSHOKUMEI' at row 1
----------------------------------------------------------------

なんかエラーが出た「ERROR 1366 (HY000): Incorrect string value」でググると、MySQLとSQLファイルの文字コードが異なるのが原因だそうで、テキストエディタ「mi」で表示させてみると、確かに文字コードは「shift_jis」で改行コードは「CR+LF」で、Windows用のファイルでした。


これを、文字コード「UTF-8」、改行コードを「CR」に変更して、保存してもう一度流します。


しかし、同じエラーが出ます。

なのでMySQLの文字コードを調べてみました。
----------------------------------------------------------------

mysql> show variables like 'character%';
+--------------------------+---------------+
| Variable_name | Value |
+--------------------------+---------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.6.14-osx10.7-x86_64/share/charsets/ |
+--------------------------+----------------+
8 rows in set (0.00 sec)
----------------------------------------------------------------

なんか「latin1」というのがある。これを「utf8」にすればいいのかもしれないですね。

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

mysql> set character_set_database = utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server = utf8;
Query OK, 0 rows affected (0.00 sec)

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

上の表では、「character_set_database」と「character_set_server」を変えたらうまくいきそうです。
そこで、再度文字コードを表示してみると。

mysql> show variables like 'character%';
+--------------------------+------------------------+
| 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/local/mysql-5.6.14-osx10.7-x86_64/share/charsets/ |
+--------------------------+------------------------+
----------------------------------------------------------------

これで、流してみると。
----------------------------------------------------------------

Query OK, 1 row affected, 5 warnings (0.00 sec)

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

警告が出た。まあいいか・・・。

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

mysql> select * from kurabu;
+-------------+-----------+
| KURABUBANGO | KURABUMEI |
+-------------+-----------+
| 1 | ??? |
| 2 | ????? |
| 3 | ??????? |
| 4 | ????? |
| 5 | ????? |
| 6 | ?????? |
| 7 | ????? |
| 8 | ???? |
+-------------+-----------+
8 rows in set (0.00 sec)

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

よくねぇよ。
これは、すでにDB領域が文字コード「Latin1」で作られているからだそうで、DB領域を作りなおさなければなりませんが、いちいち文字コードを指定するのが面倒なので、MySQLの設定ファイル「my.cnf(Windowsの場合my.ini)」を作ることにします。

(つづく)


参考サイト 忘れないようにメモしておこうかな。 - mysqlでERROR 1366 (HY000): Incorrect string value」

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。