Rails 3.1: исключение Sqlite - PullRequest
       0

Rails 3.1: исключение Sqlite

1 голос
/ 17 января 2012

Я пытаюсь запустить действительно простое приложение Ruby on Rails на VDS.Я использую Nginx, Phusion Passenger и Sqlite3.У меня есть права root.

Код создания проекта:

$ rails new myapplication
$ cd /rails_apps/myapplication
$ bundle install
$ rails generate scaffold Post name:string title:string content:text
$ RAILS_ENV=production rake db:migrate

Я могу зайти на главную страницу, все хорошо.Но когда я пытаюсь вставить данные в БД, я получаю следующее:

SQLite3::ReadOnlyException: attempt to write a readonly database: INSERT INTO "posts" ("content", "created_at", "name", "title", "updated_at") VALUES (?, ?, ?, ?, ?)

Как мне это исправить?

UPD:

chmod 777 \db

Помогло мне.

Ответы [ 6 ]

9 голосов
/ 02 мая 2013

После изменения владельца и прав файлов db мне пришлось перезапустить сервер rails, чтобы все заработало.

4 голосов
/ 17 января 2012

Все еще звучит как вопрос привилегий для меня.Убедитесь, что у пользователя, на котором вы запускаете rails as, есть разрешение на редактирование файла.Например, если вы запускаете rails в phusion, я считаю, что эффективный пользователь и группа rails - это пользователь и группа, в которых работает nginx.Чтобы проверить, если это разрешения.Я хотел бы начать с chmod 777 в вашем файле sqlite db и посмотреть, поможет ли это.Если это так, следите за тем, чтобы узнать, можете ли вы более разумно установить разрешения и владеть файлом db для своего пользователя nginx.

3 голосов
/ 25 января 2015

Если вы вошли в систему как любой, кроме администратора, вы можете использовать rvmsudo rake db:migrate, который запросит у вас пароль администратора и предоставит права доступа для выполняемой миграции.

0 голосов
/ 15 декабря 2014

Я получил эту же ошибку в Rails 4.1 после удаления драгоценного камня импрессионистов из моего приложения.

Что я в итоге сделал, чтобы это исправить:

  1. Удаление связанных с БД / миграциейгенерации новой таблицы для импрессионистов
  2. Изменение файла schema.rb вручную для удаления ссылок на импрессионистов
  3. , перезагрузите сервер
  4. passenger-memory-stats, чтобы убедиться, что приложениеперезапустился, и apache поднял рэпп-ап.

После этого все работало нормально, хотя пытаться выяснить причину было огромной болью.

Единственное, что я бы порекомендовал сделать, это проверить ваш users и убедиться в отсутствии дубликатов.

0 голосов
/ 01 июля 2013

Я знаю, что это старый вопрос, но для других, которые находят его так же, как и я во время поиска, я бы посоветовал взглянуть на ответ Бенджамина на этот вопрос:

Как мне настроить разрешениедля приложения Rails?

В частности, что касается вышеприведенного ответа, его первая строка: «Вам определенно не следует использовать 0777 для ваших прав доступа к файлам. Это более легко подвергает вас уязвимостям».* Я знаю, что Мэтт просто предлагал это в качестве шага отладки, он не предлагал оставить это таким образом в производстве, но ОП, кажется, принял это таким образом.

0 голосов
/ 22 июля 2012

Rails 2.3.5 У меня также возникает та же проблема, когда я пытаюсь вставить запись, тогда я получаю ту же ошибку:

Проблема была, когда я создал проект, в котором db / schema.rbвладелец - root.я вошел в систему с моим текущим пользователем [не root].после смены владельца в Ubuntu файла.

сначала проверьте владельца файла, затем смените владельца

chown userName fileName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...