mysqldumpで作ったSQLファイルを流し込んだときに'multiple triggers with the same action time and event for one table'というエラーが起きたときの処方箋
とある日のこと、MySQL-5.6環境にてmysqldumpを行いつつmysqlコマンドでデータを流し込んでいると、以下のエラーが発生して止まりました。
そんな時はmysqldumpコマンドの引数に--skip-triggers
を追加しましょう。
エラー内容
ERROR 1235 (42000) at line 5065: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
対処法
mysqldumpコマンドを2つに分けます。--skip-triggers
を追加したものと、そうでないものの2つです。
このエラーが起きないよう、--skip-lock-tables
を指定しましょう。
$ mysqldump --host 10.100.23.2 --user dump --password --skip-lock-tables --order-by-primary --quick --set-gtid-purged=OFF wikipedia > wikipedia-data.sql
そしてそれとは別に、--routines
と--triggers
を指定しましょう。
$ mysqldump --host 10.100.23.2 --user dump --password --routines --no-create-info --no-data --no-create-db --skip-opt --triggers wikipedia > wikipedia-triggers.sql
これら2つのファイルを、順番にインポートすれば、データベースの流し込みはOKです。
引数説明
- --no-create-info create table文を出力しない
- --no-data データを出力しない
- --routines ストアド情報を出力
- --skip-triggers トリーガを出力しない
- --triggers トリーガを出力する
参考サイト
Dumping MySQL Stored Procedures, Functions and Triggers
http://gubendran.blogspot.jp/2010/09/dumping-mysql-stored-procedures.html