【MySQL】互換性の都合でダンプが流し込めない時
問題
あるMySQLサーバーで作成したダンプファイルを、別のMySQLサーバーでリストアしようとしたら、以下のようなエラーで取り込めませんでした。
# gzip -dc test_20120801.dmp.gz | mysql hogehoge ERROR 1064 (42000) at line 717: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE, KEY `shop_id_idx` (`shop_id`) ) ENGINE=MyISAM DEFAULT CHARSET=uji' at line 21
何が悪いの?
答え
MySQLの通常のダンプファイルは、MySQL独自の構文を含んだSQLとなります。
バージョン間での仕様変更の影響や、環境の違いで、よそのMySQLサーバーへダンプを持っていってもそのまま流し込めないことがあります。
こういう時は、独自SQL文ではなくANSIに基づいたダンプを書き出してもらいましょう。
# mysqldump --compatible=ansi DBNAME | gzip -c > DBNAME.dmp.gz
compatibleオプションでansiを指定します。
コメント