1

MySQL バージョン: 5.58 MySQL Community Server

開発リリースごとに用意されているスクリプトを整理して、本番データベース管理者がリリース中にスクリプトを実行しやすいようにしています。update、insert、delete ステートメントを含む少数のスクリプトと、それらのスクリプトを呼び出す 1 つのマスター スクリプトがあるため、データベース管理者はリリース中にマスター スクリプトを呼び出すだけで済みます。

master.sql には以下が含まれます。 ソース file1.sql ソース file2.sql ソース file2.sql

これらのスクリプトのデバッグ中に、「tee」を使用してファイルにログを記録しています。個々の sql ファイル内で実行されるクエリごとに、次のような結果が得られます。

クエリ OK、影響を受ける 1 行 (0.01 秒) 一致した行: 0 変更された: 0 警告: 0

上記の例では、where 句で一致するものが見つからなかったため、行を更新できませんでした。その理由を確認するには、そのクエリを調べる必要があります。しかし、結果に表示されないためクエリが表示されないため、結果を数えてから元のファイルを見て、どのクエリに問題があるかを調べる必要があります。これは、各ファイルに少数のクエリがある場合は大した問題ではありませんが、ファイルに数百のクエリがある場合は苦痛です。

私の質問は次のとおりです。ファイル内の各クエリの後にある種の印刷ステートメントを使用せずに (つまり、「my query」を選択する)、mysql に実際のクエリとそれが生成する結果を表示させる方法はありますか?

ありがとう

4

3 に答える 3

0

を使用しteeている場合は、bashスクリプトがあるようです。それぞれが実行される前に、クエリ(またはクエリの名前)をエコーアウトしてみてください。

于 2012-10-05T16:38:21.123 に答える
0

0秒で低速のクエリログを有効にできます。これにより、すべてのクエリがログに記録され、SQLステートメント自体だけでなく結果も取得されます。それがあなたに十分な情報を提供するかどうかはわかりません。

# Time: 121005 11:39:51
# User@Host: user[user] @ localhost []
# Query_time: 0.003103  Lock_time: 0.000077 Rows_sent: 0  Rows_examined: 3
SET timestamp=1349455191;
update test set end = Null;
于 2012-10-05T16:41:15.477 に答える
0

mysqlクライアントの詳細オプションを使用できます。例えば:

mysql -u xxxx -pxxxx -h xxxxx -P XXXX -vvv --show-warnings --line-numbers < x.sql

クエリのテキストを含む詳細なログを生成します。

于 2012-10-05T16:41:54.337 に答える