mysqldumpでバックアップして戻すとエラーになる

夜中は誰も触らないのでcronでhoge_dbをtoday.mysqlとしてバックアップしている。

mysqldump -a --user=root --password=password hoge_db > C:\backup\today.mysql

バックアップしたファイルを別のPCで復元を試みる。

C:\Users\kenmituo\Desktop>mysql -u root -p hoge_db < C:\backup\today.mysql
Enter password: *******
ERROR 2005 (HY000) at line 295: Unknown MySQL server host '10:59:08','2008-10-01
' (0)

エラーになる。

今回の場合はテキスト形式のカラムに「,」「'」「"」など混ざっているフリーダムなデータが問題なのかなーって気がする。

なんとなく見つけた(辿り着くまでに数日掛かった)http://d.hatena.ne.jp/takjoe/20080513/1210629902を試す。

ダンプのときにオプションを追加してみる。

C:\Users\kenmituo\Documents>mysqldump -u root -p --opt --hex-blob --allow-keywor
ds --default-character-set=binary hoge_db > c:\backup\hoge.mysql
Enter password: *******

別のPCで展開する

C:\Users\hoge\Desktop>mysql -u root -p hoge_db < c:\bk\hoge.mysql
Enter password: *******

C:\Users\hoge\Desktop>

できた?
http://www.risewill.co.jp/blog/archives/195を元にオプション解説

  • opt:add-drop-table、add-locks、create-options、disable-keys、extended-insert、lock-tables、quick、set-charsetを指定するエイリアスです。速いダンプと、MySQLサーバへのリロードを目的としています。このオプションはデフォルトで有効になっています。
  • hex-blob:データタイプがBINARY、VARBINARY、BLOB、BITのカラムを、16進数変換してダンプします。
  • allow-keywords:キーワードであるカラム名の作成を許可します。
  • default-character-set:デフォルトのキャラクタセットを指定します。特に指定されていない場合、utf8を使用します。

optは指定しなくても結果は同じだけど「オプションだよ」って宣言している感じがするからまいっか。