MySqlを使用時に、S2Unit4で自動的にロールバックが行われない

と思ったら、MySqlのテーブルタイプがMyISAMだったのがいけなかったらしい。

デフォルトだと、テーブル作成時にMyISAMがテーブルタイプとして適用けど、MyISAMトランザクションをサポートしていないらしい。他のテーブルタイプとしてInnoDBというのがあって、これはトランザクションをサポートしているので、これを使えばきちんとロールバックが行われる。

テーブル作成時にInnoDBを指定するやり方

CREATE TABLE xxx (
    ...
) ENGINE=InnoDB;

MyISAMInnoDBの違い

マイコミジャーナルの記事:MySQL、MyISAMとInnoDBを選ぶ方法

MyISAMの方が高速みたいだけど、データの整合性が重要な場合はInnoDBを選択したほうがよさそうだね。よほど性能に気を使わない限り、InnoDBを選択したほうが無難そうだけど、どうなんだろうね?