0

Linux 上のサーバーから Windows 上のサーバーに MySQL DB をコピーする必要があります。mysqldump を使用してみましたが、Stored Procs が含まれていないようです。スキーマ、データ、ストアド プロシージャ、トリガーなど、すべてをコピーしたい。

ありがとう、ドン

4

2 に答える 2

2

mysqldumpの「--routines」オプションが必要です。

--routines フラグのドキュメントから:

ダンプされたデータベースからストアド ルーチン (プロシージャと関数) をダンプします。このオプションを使用するには、mysql.proc テーブルに対する SELECT 権限が必要です。--routines を使用して生成された出力には、ルーチンを再作成するための CREATE PROCEDURE および CREATE FUNCTION ステートメントが含まれています。ただし、これらのステートメントには、ルーチンの作成や変更のタイムスタンプなどの属性は含まれません。これは、ルーチンが再ロードされると、再ロード時間と同じタイムスタンプで作成されることを意味します。

元のタイムスタンプ属性を使用してルーチンを再作成する必要がある場合は、 --routines を使用しないでください。代わりに、mysql データベースに対する適切な権限を持つ MySQL アカウントを使用して、mysql.proc テーブルの内容を直接ダンプしてリロードします。

このオプションは MySQL 5.1.2 で追加されました。それ以前は、ストアド ルーチンはダンプされません。ルーチンの DEFINER 値は、MySQL 5.1.8 までダンプされません。これは、5.1.8 より前では、ルーチンがリロードされると、定義者がリロード ユーザーに設定されて作成されることを意味します。元の定義者でルーチンを再作成する必要がある場合は、前に説明したように、mysql.proc テーブルの内容を直接ダンプしてロードします。

于 2009-06-09T18:33:40.357 に答える
2
mysqldump -u root -p --routines --databases io \
| sed -e "s/;;/\$\$/g" \
> io.sql

ダンプしてみてください。コマンドを次の場所にインポートします。

mysql -u root -p --fource --databases io < io.sql 
于 2009-06-09T18:34:54.053 に答える