2016-07-09 12 views
0

私はMySQL Workbenchでの開発に多くの時間を費やしています。ここ数週間、私はいくつかのストアドプロシージャに取り組み、ロールバックされたトランザクションでそれらをテストしてきました。しかし、私がそれらをロールバックしていても、手順によって加えられた変更はコミットされています。私は 'set autocommit = 0;'を実行する提案を見つけました。それはしばらく働いた。しかし、今、それはどちらも働いていません。次のコードを実行すると、Workbenchを実行している別のコンピュータでselect文を実行しても、プロシージャの変更が表示されます。MySQLはトランザクションをロールバックしません

set autocommit = 0;

start transaction;

call TestProc(129,131);

select * from Table1;

select * from Table2;

ロールバック;

"set autocommit = 0"という行は以前には必要ありませんでした.1にリセットするまでは、それを駄目です。しかし、私が言ったように、今は動作しません。

統計情報などをリセットする必要があるのだろうかと思います。私は "Flush Tables;" 「クエリキャッシュをフラッシュする」;しかし、問題は続く。私はこれがメンテナンスの問題であると推測していますが、私は修正する方法がわかりません。

ご協力いただければ幸いです。

おかげで、

マイク

+0

あなたはこれ以上の詳細を必要としています – Drew

答えて

0

14.3.2 Statements That Cannot Be Rolled Back

は、いくつかの文をロールバックすることはできません。一般に、これらには...またはストアドルーチン(私はあなたのTestProc(129,131)を呼び出す;)を意味します。 このような記述を含まないようにトランザクションを設計する必要があります。

私はそれが参考になったと思います。

+0

Leonid、あなたの返事をありがとう。しかし、私はレコードを更新、挿入、および削除するプロシージャを含む、何年もの間、ロールバックされたトランザクション内でストアドプロシージャを問題なく実行してきました。私は数週間前にこの問題に遭遇し始めました。 –

関連する問題