2017-10-03 11 views
0

ストアドプロシージャをダンプしないのmysqldump:私は、次のコマンドを実行していた

mysqldump -u root db_name --add-drop-database --routines --verbose > db_name.sql 2>db_name.log 

をしかし、私は、SQLファイルの内容を確認したときに、何のストアドプロシージャの作成構文はありませんでした。私はまた、ログファイルをチェックし、同じ結果を受け取った。

誰もがこの問題の根本原因を知っていますか?私はすでにGoogle検索し、これを見つけたhttps://github.com/sequelpro/sequelpro/issues/517。しかし、まだ回避策はありません。

参考までに、私はMariaDB 10.2を使用しています。

+0

'--routines'に相当する' -R'は何か違いはありますか? –

+0

'db_name'の代わりに' --databases db_name'を使用してください。 –

+0

助けてくれてありがとう、それは私が日常的な特権を与えていないからだ。 – budiantoip

答えて

1

あなたは許可を欠落している可能性があり:

・--routines、-R

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

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

+0

その権限がない場合は、エラーがスローされます。 –

+0

はい、あなたが正しいです、私はあなたの助けを借りて、ルーチンprivilige、感謝を与えていない:) – budiantoip

関連する問題