わかってないこと多いですが、取りあえずメモ
●文字化けする場合
mysql画面で、文字コード関連の設定を見ると
> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
こうバラバラだから、内部で文字コードが変換されてる?
というわけで、
--default-character-set=latin1
と設定してみたら上手くいきました
●オプションの位置
今回設定したオプションは以下のもの
-c, --complete-insert … 完全な挿入ステートメント(カラム名も指定)を使用する。
→コピー元と先のテーブルのカラムがちょっと違う(先のほうがカラム数が多い)かもなので
-n, --no-create-db
CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; が出力に含まれない。--databases オプションまたは --all-databases オプションを指定した場合は、上記の行が追加される。
-t, --no-create-info
テーブル作成情報(CREATE TABLE ステートメント)を書き込まない。
--default-character-set
これらは、
-u user_name, --user=user_name
サーバとの接続に使用する MySQL ユーザ名。デフォルト値はユーザの Unix ログイン名。
オプションより前に書くとエラー(というかスルー)になる模様
●特定テーブルをdumpする
ダンプしたいテーブル名を、空白で区切って、データベース名のあとに羅列する。
●実際のコマンド
mysqldump -u
USERNAME -p -c -n -t --default-character-set=latin1 -h
IP_ADDRESS DB_NAME TABLE_NAME1 TABLE_NAME2 TABLE_NAME3 > dump.sql
●ダンプしたデータを復元(実際は同じテーブル構造の別DB=開発DBでした)する
mysql -u
USERNAME DB_NAME < dump.sql