Rails: ошибка «Не удалось найти таблицу»

Я разработал простое приложение для рельсов, которое отлично работает на моем компьютере для разработки.

Когда я помещаю его на производственный сервер (Phusion Passenger/Nginx), он возвращает мне эту ошибку в файле my_app/log/production.log:

ActiveRecord::StatementInvalid (Could not find table 'categories')

Что случилось?

PS: После ошибки именования имя таблицы было отредактировано вручную, но оно отлично работает в режиме разработки. Я не подозреваю, что ошибка неправильного названия.


person Zakaria    schedule 21.07.2011    source источник
comment
вы уже запускали rake db:migrate на своем сервере?   -  person stephenmurdoch    schedule 22.07.2011
comment
Конечно. Я забыл выполнить следующую команду: rake db:migrate RAILS_ENV="production". Пожалуйста, оставьте свой комментарий, чтобы я мог отметить его как лучший ответ.   -  person Zakaria    schedule 22.07.2011


Ответы (2)


  1. Убедитесь, что вы выполнили миграцию базы данных на рабочем сервере.

  2. Редактирование таблиц вручную — это огромное нет-нет в Rails. Это доставит вам больше головной боли, чем оно того стоит. Если вам нужно что-то изменить, вам лучше создать новую миграцию, чтобы изменить это, даже если это просто изменение имени. (Однако вы можете откатить изменения БД, удалить последнюю миграцию и создать новую, но, как я уже сказал, это больше проблем, чем того стоит)

  3. Убедитесь, что ваш XML-файл схемы верен или, по крайней мере, соответствует фактической схеме. Вы можете удалить его и запустить rake:db:migrate для создания нового.
person MunkiPhD    schedule 21.07.2011

Вы можете вручную назначить имя таблицы для моделей ActiveRecord, чтобы предотвратить эти ошибки неправильного наименования.

class Category < ActiveRecord::Base
  self.table_name = 'categories'
end
person Saman Mohamadi    schedule 16.01.2016