SQLiteを使ったサイトをいくつか運営しているのですが、時折発生する↓このエラーに頭を悩ませていました。 SQLSTATE[HY000]: General error: 5 database is locked 急いでいる方のために先に答えを書いておきますが、このエラーはSQLiteのトランザクションの挙動を理解していないために発生しているエラーであり、BEGIN IMMEDIATEを適切に使うことで解決しました。 何も考えず、pdoのbeginTransactions()を使ったり、単に BEGIN だけで開始したり…。 PDOの接続オプションで PDO::ATTR_TIMEOUT に20を設定しておけば書き込みが衝突しても20秒待ってくれるだろ、と思い込んだり…。MySQLやPostgreSQL、SQLSeverやOracleなどの商用データベースに慣れている方ほどこの Databa