Amazon Relational Database Service (Amazon RDS) for MySQL インスタンスに対して、mysqldump を使ってデータのインポートを試みると、次のようなエラーを受け取ります。

Definer error: example: /*!50003 CREATE*/ /*!50017 DEFINER=`rdsadmin`@`localhost`*/ /*!50003 TRIGGER customer_update AFTER UPDATE ON `customer` FOR EACH ROW

definer エラーは、MySQL がデータベースユーザーの下でオブジェクトの作成を試み、データベースユーザーが宛先のデータベースに存在しない場合にトリガーされます。Amazon RDS がスーパーユーザーの権限をもっていない場合、MySQL が localhost に対してユーザーを作成しようとすると同様のエラーを受け取る場合があります。

definer エラーには、複数の方法で対応できます。

1.    以下の definer 行を削除します。

/*!50017 DEFINER=`rdsadmin`@`localhost`*/

この行は、次のようになります。

/*!50003 CREATE*/ /*!50003 TRIGGER customer_update AFTER UPDATE ON `customer` FOR EACH ROW

2.    definer ユーザー「rdsadmin」と「localhost」を「masteruser」/ と「%」にそれぞれ名前変更します。

/*!50003 CREATE*/ /*!50017 DEFINER=`masteruser`@`%`*/ /*!50003 TRIGGER customer_update AFTER UPDATE ON `customer` FOR EACH ROW

3.    definer オプションなしでダンプファイルを作成または再作成します。

MySQL ダンプユーティリティは、DEFINER を削除するためのオプションを提供しません。一部の MySQL クライアントは、論理的バックアップを作成したが、デフォルトにより発生しない場合、definer を無視するオプションを提供します。優先する MySQL クライアントの文書を見直して、DEFINER を無視するオプションが選択可能であるかどうかを確認する文書を見直してください。MySQL コマンドラインクライアントは、definer を除外することができません。しかし、クラアントは DEFINER を削除するか、ユーザー名とホストを検索して置換するために、サードパーティーのツールで使用されることができます。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2016 年 6 月 27 日

更新: 2018 年 7 月 2 日