1. ホーム
  2. sqlite

[解決済み] 挿入時にSQLiteのエラー 'attempt to write readonly database' が発生する?

2022-02-19 06:49:10

質問内容

ウェブサイト用に使用しているSQLiteデータベースがあります。問題は INSERT INTO が表示されます。 PDOException

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database

サーバーにSSH接続してパーミッションを確認したところ、データベースのパーミッションは

-rw-rw-r--

私は*nixのパーミッションにそれほど詳しくはありませんが、これは間違いなく次のような意味だと思います。

  • ディレクトリでない
  • 所有者には読み取り/書き込みの権限があります(これは私です。 ls -l )
  • グループには読み取り/書き込みの権限があります
  • Everyone elseは読み取り権限のみ

を使用することも知っている限り探しました。 sqlite3 というプログラムがありますが、該当するものは見つかりませんでした。

PDOがどのような権限でデータベースを開こうとしているのか分からなかったので、私は次のようにしました。

chmod o+w supplies.db

今度は、別の PDOException :

SQLSTATE[HY000]: General error: 14 unable to open database file

を実行したときだけ発生します。 INSERT クエリ データベースを開いた状態です。

何か心当たりはありますか?

解決方法は?

問題は、結局のところ、PDO SQLite ドライバは、書き込み操作を行う場合 ( INSERT , UPDATE , DELETE , DROP など)、データベースが存在するフォルダーには、実際のデータベースファイルと同様に書き込み権限が必要です。

の中にこの情報がありました。 PDO SQLite ドライバのマニュアルページの一番下にあるコメント .