0

私が抱えている問題は、トリガー定義に元のスキーマ名がハードコーディングされていることです。例:

TRIGGER `sales`.`tender_delete_trigger`
AFTER DELETE ON `sales`.`tender`
FOR EACH ROW
......

したがって、mysqldumpを使用して「sales」スキーマをバックアップし、同じサーバー上で「sales_test」と呼ばれる新しく作成されたスキーマに復元しようとすると、同じイベントで複数のトリガーの行に沿って何かが許可されていないことを示すエラーが発生します。

私の現在の解決策は、ダンプファイル内の古いスキーマ名「sales」を新しいスキーマ名「sales_test」に手動で置き換えることです。これは機能しますが、より簡単で面倒な解決策はありますか?

4

1 に答える 1

1

手動で行わないでください。O / Sを指定しないので、Linuxを想定しますが、他のほとんどの場合と同等のものがあります。

vim -c'%s/`sales`/`new_schema_name`/g' -c':x' dumpfile.sql

もう1つの可能性は、トリガーからスキーマ名を省略することです。現在のスキーマが想定されます。


(編集)

1)同意しました。しかし、スキーマの名前を変更することは、そもそも奇妙な問題です。2)同様の名前のテーブルと変数が存在する可能性があるため、これは確かにリスクです。パターンを変更すると、次のことが役立つ場合があります。

  %s/\([^.]\)`sales`\([.]\)/\1`new_schema_name`\2/g

間に空白がない限り、スキーマ名は適切に配置されると主張します。

于 2011-04-15T18:22:54.130 に答える