私はinnoDBテーブルでトランザクションサポートをテストしていましたが、問題を解決するために、MyIsamテーブルで同じトランザクションを実行しようとしましたが、驚くほどうまくいきました。 myIsamテーブルでクエリが1つのアトミック操作ではなく次々に実行され、START TRANSACTIONおよびCOMMITおよびROLLBACK操作からエラーが発生しないと想定しています。興味があります。MyIsamエンジンはこの操作を無視するだけですか、それともいくつかのアクションを実行しますか?
MyISAMは実質的に自動コミットモードで動作し(トランザクションエンジンではないため)、コミット/ロールバックは無視されます。
実際には、ストレージエンジンはSQLパーサーから分離されたMySQLアーキテクチャの別のレイヤーであり、SQLレイヤーは下位レベルのAPIを使用してストレージエンジンと通信します。これが、機能の異なるサブセットをサポートする共通のSQLおよびエンジンがある理由です。アーキテクチャの非常に高レベルの概要を見ることができます ここ
MyIsamテーブルは、このために作成されていません。 5+バージョンでもそうではありません。データを保存するためだけのものでした。トランザクションやデータの回復は保証されません。これにはInnoDBを使用し、必要に応じてレプリケーションの目的でMyIsamを使用する必要があります(クロステーブルチェックがないため、MyIsamテーブルでデータを取得する方が高速です)。
MySQLからこの投稿を読むことができます http://forums.mysql.com/read.php?21,68686,69229#msg-69229