MySQL から取得した文字が化けるのは DBD::MySQL のせいだった[MySQL]
(2018-06-06 02:28:07) by shinoda


< ページ移動: 1 2 >

MySQL を使った Web システムの移行作業をした。

何年か前に作成したもので、DB とのやり取りをする部分は Perl による CGI 形式になっている。
枯れた技術最高!(笑)
あ、今回は Perl ではなく MySQL の話ね(^^;

移行先にも MySQL は入っていたので、早速、移行元で、

# mysqldump -u root -p --default-character-set=binary hoge_db > hoge_db.sql

と、バイナリデータとしてバックアップ。
このデータを移行先サーバに持ち込み、

# mysql -u root --default-character-set=binary hoge_db < hoge_db.sql

と、DB にリストアした。(もちろん、予め空の DB を作っておく)

早速 mysql コマンドで SELECT をしてみると、文字化け〜。表示できなかった文字が ? に置換されとる。

DB を確認すると、

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

なんか、文字コードが「ラテン語」になっとるやないか。

/etc/my.cnf の mysqld、client セクションに、それぞれ、

[mysqld]
character-set-server = utf8

[client]
default-character-set = utf8

を追加し、DB 確認。

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8