MySQL+ADOdbでトランザクションを使う

MySQL+ADOdbでトランザクションがうまく動かなかったので、チェックしたところをメモ。

データベースエンジンがMyISAMになっている

MyISAMではトランザクションが使えない。トランザクションが使いたいならInnoDBとかにしないといけない。

なぜかInnoDBが使えない

xamppを使っていると、デフォルトのmy.cnfには

skip-innodb

という項目があって、InnoDBが使えないようになっている。この項目を#でコメントアウトしてmysqlを再起動すれば使えるようになる。

データベースドライバに『mysql』を使っている

ADOdbのデータベースドライバには以下の3種類がある。

mysql
PHP4,5で使える。トランザクションが使えない。
mysqlt
PHP4,5で使える。トランザクションが使える。
mysqli
PHP5でmysqli拡張が有効になっていれば使える。トランザクションが使える。

データベースドライバはADONewConnection()の引数で指定する。
EthnaEthna_DB_ADOdb経由で使っているなら、[PROJECTID].iniのdsnをチェック。