ツール
SQLite
1 ファイルで完結するサーバーレスのリレーショナルデータベース。開発やテストの既定の保存先として使われるが、書き込みロック・型の扱い・ファイルパスの解決で詰まりやすい。
問題一覧(2)
SQLite で「database is locked」が出て書き込めない
SQLite は同時に 1 つの接続しか書き込めず、別の接続がトランザクションを開いたままだと待ち時間を過ぎた時点でこのエラーになる。コミットされずに残っている接続を閉じ、トランザクションを短くし、待ち時間と WAL モードを設定する。
更新: 2026-09-21、タグ: lock、transaction、busy-timeout
SQLite で外部キー制約が効かない(存在しない ID を INSERT できてしまう)
SQLite の外部キー制約は既定で無効で、接続ごとに PRAGMA foreign_keys = ON を実行して初めて効く。トランザクションの途中で実行すると黙って無視されるので、接続を開いた直後に実行し、PRAGMA foreign_keys で 1 が返ることを確かめる。
更新: 2026-09-21、タグ: foreign-key、pragma、constraint