エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

pdoでロールバックが効かない!? あっけないけどハマる原因

PHPでDBを使うときはPDO

 

 

ちゃんとinTransactionをしているのに、rollBackされない

現象に悩まされた。

 

 

テーブルのタイプ確認しました?

 

innoDBトランザクション使えるけど、

MyISAMは使えないからね!!!

 

 

  しかも!!!

 

立ち悪い事にMyISAMでは使えないくせに、inTransactionの戻り値はtrueだ!!

rollBackの戻り値もtrueだ!!!

 

 

あんじゃそりゃーと思いますがしょうがない。

 

よくも悪くもザックリ感たっぷりのPHPだからしょうがない。

 

 mysql立ち上げて、下記を打ってテーブルのタイプ変えてみて

 

ALTER TABLE table_name ENGINE=InnoDB;

 

 

 

これでOKなはず。