SOFTELメモ

</> 技術者募集

【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を指定します。

関連するメモ

コメント