pconnectでトランザクションしていてエラーが起きたとき
pconnectでデータベースに接続し、トランザクションしたはいいけど途中でエラーを吐いたとき。
というより、pconnectしてたの気づいてなかったので詰まった。
$conn = @mysql_pconnect("localhost", "root", ""); $db = mysql_select_db("test", $conn); echo $conn; mysql_query("START TRANSACTION"); $sql= "insert into ci_test(t)values('".uniqid()."');"; mysql_query($sql,$conn); $sql= "insert into ci_エラー出すよー(t)values('".uniqid()."');"; mysql_query($sql,$conn); //ここで止まる; echo $sql;
スクリプトはもちろん止まっててこの時点でのデータベースに
データは書き込まれていない(内部では書かれている)が、
スクリプトを直さずもう一度ページを更新した際にコミットされるようだ。
なので、pconnectを使う場合はエラーは確実に出さないようにしないとデータが狂ってしまうので注意が必要。
ちなみにrollbackは、auto_increment値までは戻らない。