Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

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