У меня есть база данных 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
запрос после базы данных открыт.
Какие-либо идеи о том, что продолжается?
Проблема, как оказалось, заключается в том, что драйвер PDO SQLite требует, чтобы если вы собираетесь выполнить операцию записи (INSERT
, UPDATE
, DELETE
, DROP
и т.д.), то папка, в которой находится база данных, должна иметь права на запись, как и сам файл базы данных.
Я нашел эту информацию в комментарии в самом низу страницы руководства по драйверу PDO SQLite.
Это может произойти, когда владелец самого файла SQLite не совпадает с пользователем, запускающим сценарий. Подобные ошибки могут возникнуть, если нельзя записать весь путь к каталогу (то есть каждый каталог по пути).
Кому принадлежит файл SQLite? Вы?
От кого запущен сценарий? Апач или никто?