Ошибка SQLite 'пытается записать базу данных только для чтения' во время вставки?

У меня есть база данных SQLite, которую я использую для веб-сайта. Проблема - это, когда я пытаюсь INSERT INTO это, я получаю a PDOException

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

У меня SSH'd в сервер и проверенные полномочия и базу данных есть полномочия

-rw-rw-r--

Я не настолько знаком с *, отклоняют полномочия, но я вполне уверен, это означает

  • Не каталог
  • У владельца есть полномочия чтения-записи (это - я, согласно ls -l)
  • У группы есть полномочия чтения-записи
  • Все остальные только прочитали полномочия

Я также смотрел везде, я знал к использованию sqlite3 программа, и найденный ничем соответствующим.

Поскольку я не знал, с какими полномочиями PDO пытается открыть базу данных, я сделал

chmod o+w supplies.db

Теперь, я получаю другого PDOException:

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

Но ТОЛЬКО происходит, когда я пытаюсь выполниться INSERT запрос после базы данных открыт.

Какие-либо идеи о том, что продолжается?

116
задан DaveInCaz 22 February 2019 в 14:34
поделиться

2 ответа

Проблема, как оказалось, заключается в том, что драйвер PDO SQLite требует, чтобы если вы собираетесь выполнить операцию записи (INSERT, UPDATE, DELETE, DROP и т.д.), то папка, в которой находится база данных, должна иметь права на запись, как и сам файл базы данных.

Я нашел эту информацию в комментарии в самом низу страницы руководства по драйверу PDO SQLite.

288
ответ дан 24 November 2019 в 02:12
поделиться

Это может произойти, когда владелец самого файла SQLite не совпадает с пользователем, запускающим сценарий. Подобные ошибки могут возникнуть, если нельзя записать весь путь к каталогу (то есть каждый каталог по пути).

Кому принадлежит файл SQLite? Вы?

От кого запущен сценарий? Апач или никто?

13
ответ дан 24 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: