2011-07-21 5 views
6

Opracowałem prostą aplikację szyn, która działa doskonale na mojej maszynie programistycznej.Szyny: błąd "Nie można znaleźć tabeli"

Kiedy umieścić go na serwerze produkcyjnym (Phusion pasażera/Nginx), zwraca mi, że błąd w pliku my_app/log/production.log:

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

Co jest nie tak?

PS: Po błędzie nadawania nazw nazwa tabeli została zmieniona ręcznie, ale działa dobrze w trybie programowania. Nie podejrzewam, że to błąd błędnej nazwy.

+3

czy uruchomiłeś 'rake db: migrate' na swoim serwerze? – stephenmurdoch

+3

Rzeczywiście. Zapomniałem wykonać następujące polecenie: 'rake db: migrate RAILS_ENV =" production "'. Proszę zamieścić swój komentarz, aby zaznaczyć go jako najlepszą odpowiedź. – Zakaria

Odpowiedz

5
  1. Upewnij się, że uruchamianie migracje baz danych na serwerze produkcyjnym

  2. ręcznej edycji tabel jest ogromny nie nr w Rails. Da ci więcej bólów głowy, niż jest warta. Jeśli chcesz coś zmienić, lepiej wygenerować nową migrację, aby ją zmienić - nawet jeśli jest to tylko zmiana nazwy. (Można jednak przywrócić zmiany db, usunąć ostatnią migrację i utworzyć nową - ale jak już powiedziałem - jest to więcej kłopotu niż to jest warte)

  3. Upewnij się, że plik xml schematu jest poprawny lub co najmniej pasuje do faktycznego schemat. Możesz usunąć to i uruchomić prowizję: db: migrate, aby wygenerować nową.
+0

Dziękujemy za informacje. – Zakaria

0

Można ręcznie przypisać nazwę tabeli do modeli ActiveRecord, aby zapobiec błędom błędnej nazwy.

class Category < ActiveRecord::Base 
    self.table_name = 'categories' 
end