2016-04-06 8 views
0

ROLLBACKを実行するためにこれらのクエリを実行しようとしていますが、何が間違っているのか分かりませんが、警告が表示されます。MySQL:START TRANSACTION - UPDATE - ROLLBACK:非トランザクションテーブル

一部の非トランザクション変更された表をロールバックできませんでした。

私は、このメッセージの原因として最も可能性が高いのは、テーブルがトランザクション型であるが、実際はそうではないという仮説だということです。どちらのテーブルがトランザクションであるかはどのように判断されますか?

私が使用しているデータベースは、私たちがデータベースを使用する必要があるクラスに対して与えられた割り当てにあるので、ロールバックを使用していると仮定する必要があります。

答えて

3

InnoDBストレージエンジンを使用するテーブル、またはNDBクラスタストレージエンジンを使用するテーブルは、トランザクションをサポートします。他のエンジンはそうしない。 (そこ比較表は、ドキュメントのどこかだが、私は今それを見つけることができません。)

は、特定のテーブルを確認するには、使用を含め、あなたの完全なCREATE TABLE文が表示されます

SHOW CREATE TABLE <tablename>; 

ENGINE節。

は、インストールのInnoDBを持っている場合は

SHOW ENGINES; 

を使用し、データベースにインストールされているエンジンを確認するには、それはあなたがCREATE TABLE文でENGINE=InnoDBを指定するか、または

と、後でそれを変更するか、デフォルトのエンジンではありません
ALTER TABLE <tablename> ENGINE = InnoDB; 
+0

MySQLのデフォルトエンジンは、バージョンが5.5より古い場合は** InnoDBではないことにも注意してください。ここで、デフォルトのエンジンとしてInnoDBを設定するオプションを確認してください:http://stackoverflow.com/questions/3050492/how-can-i-set-default-storage-engine-used-by-mysql – andrechalom

+0

ありがとう、これは助けました私はエンジンがMyISAMであることを理解しています。今私はそれを得る。 – Sierra

+0

ああ、あなたの解決策は優れていた。どちらのソリューションももちろん知っていました。 :) – Sierra

関連する問題