トリガーとプロシージャを使用してMySQLデータベースをエクスポートする方法は?


83

.sqlすべてのトリガーとプロシージャを含むMySQLデータベースダンプ(ファイル)を作成するにはどうすればよいですか?


mysqldumpコマンドに-Rオプションを追加するだけです。
DeepanshuJain19年

回答:


122

mysqldumpデフォルトではすべてのトリガーをバックアップしますが、ストアドプロシージャ/関数はバックアップしません。この動作を制御する2つのmysqldumpパラメーターがあります。

  • --routines –デフォルトではFALSE
  • --triggers –デフォルトでTRUE

したがって、mysqldumpコマンドで、次の--routinesように追加します。

mysqldump <other mysqldump options> --routines > outputfile.sql

mysqldump引数についてMySQLのドキュメントを参照してください。


MySQL「5.1.48-community」を使用しています。「mysqldump--routines--no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql;」を実行します。しかし、エラーが発生し、エラーは「ERROR 1064(42000):SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、使用する正しい構文を確認してください」mysql dump --routines --no -create-info --no-data --no-create-db --skip-opt> dum'1行目 "。それを解決する方法は?-
Yugal

コマンド「-p-uusernamedbname」に追加すると、「;」は必要ありません。最後にサインイン
Haim Evgi 2011

1
また、MySQLコマンドラインクライアントやphpMyAdminやその他のクエリツールではなく、シェルプロンプトでmysqldumpを実行する必要があることにも注意してください。
ビルカーウィン2014年

@HaimEvgi、なぜあなたは-routines代わりに言うの--routinesですか?
ペースリエ2015年

--routinesただし、ユーザーがmysql.procテーブルへの十分なアクセス権を持っている場合にのみ機能します。GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
ロッキー

20

MYSQLのエキスパートユーザーにとっては明らかかもしれませんが、デフォルト値が関数をエクスポートしないことを理解しようとしている間、私は時間を無駄にしました。そこで、ここで、-routinesparamをtrueに設定して機能させる必要があることに言及しようと思いました。

mysqldump --routines=true -u <user> my_database > my_database.sql

1
--routines = trueを使用する必要はありません。Sprocはデフォルトではダンプされません。受け入れられた回答の例のように、-routinesを含める必要があります。
Gビュー

6

次のスクリプトを作成しましたが、問題なく動作しました。

#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}"  --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*

コマンドライン引数を使用してスクリプトを呼び出します。

backupdb.sh my_db dev_user dev_password

こんにちは、7行目で変数DBUSERが ""の間にあり、他の変数がそうではないのはなぜですか?
rafaelphp 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.