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は指定しなくても結果は同じだけど「オプションだよ」って宣言している感じがするからまいっか。