プログラムが途中終了してしまうので調べてみたところ下記のエラーが発生していました。
lang
1Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 11 database disk image is malformed'
該当するレコードをadminlitephp.phpでsqlを実行してみると、
読み出しはできるけど、書き込み(更新)でエラーになっていました。
他のレコードは普通に読み書きできるので、全てのレコード中1つだけエラーになっていたようです。
adminlitephpの機能にあるVacuum(空き領域の開放)を実行することで修復されるらしく、Vacuum実行後は正常に読み書きできるようになりました。
たしかに頻度的には更新数は多くデータ量も多い方(半角6000文字)だからかもしれません。
原因として考えられるのはデータ量が多く書き込みに時間が掛かるから…?
ぐらいしか想像ができません。データ量は減らそうと思います。
同様の問題が起きないような対策としてはどのような方法があるでしょうか。
現在は、下記のような感じで"成功すること前提"になっていて、Try-Catchも入れていません。
lang
1$stmt = $this->db->prepare($sql); 2$flag = $stmt->execute(array(':id'=>$id)); 3$stmt->closeCursor();
ただTry-Catchを入れてもデータが壊れてしまったら、
プログラムが止まらないだけで修復できないような気がします。
アドバイスをいただけると幸いです。
よろしくお願いします。
あなたの回答
tips
プレビュー