別のデータベース名を使用してインポートする必要があるデータベースをエクスポートするためにmysqldumpを使用しようとしています。mysqldumpによって生成されたSQLを見ると、トリガーがソースデータベース名で完全に修飾されている唯一のオブジェクト名であるため、私のニーズを覆しているようです。トリガーを含むオブジェクト名を完全に修飾しないようにmysqldumpに指示する方法はありますか?
1663 次
3 に答える
5
私は同じ問題を抱えていて、解決策を見つけました。データベースの設計に MySQL Workbench を使用していて、そこでいくつかのトリガーを作成しました。CREATE TRIGGER trigger_name
1つを除いて、それらはすべて構文を使用していました: CREATE TRIGGER dbname.trigger_name
(それは私の間違いでした)。Mysqldump の出力には、すべてのトリガーが同じ方法で含まれていました。1 つだけがデータベース名を持っていました。
Mysqldump は、CREATE TRIGGER
経由で表示できる元の指示を使用しますSHOW CREATE TRIGGER
。データベース名で定義されたトリガーがある場合は、単純に (削除して作成して) dbname のないトリガーに置き換えます。
于 2013-02-19T14:26:51.917 に答える
1
ほとんどの場合、トリガーを作成するときにデータベース名を追加します。データベース名を含めずにトリガーを更新してみてください。
于 2011-03-26T14:12:30.607 に答える
-1
理想的な解決策ではありませんが、次のように出力をポンピングすると、トリガーのデータベース名が取り除かれました。
mysqldump ... opts ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'
于 2012-10-16T20:56:10.900 に答える