2011-07-21 25 views
6

Desarrollé una aplicación de rieles simple que funciona perfectamente en mi máquina de desarrollo.Rieles: error 'No se pudo encontrar la tabla'

Cuando lo puse en el servidor de producción (Phusion de pasajeros/Nginx), me devuelve ese error en el archivo my_app/log/production.log:

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

Cuál es el problema?

PD: Después de un error de nomenclatura, el nombre de la tabla se editó manualmente pero funciona perfectamente en el modo de desarrollo. No sospecho que ese error de engaño.

+3

¿Ya ejecutó 'rake db: migrate' en su servidor? – stephenmurdoch

+3

De hecho. Olvidé ejecutar el siguiente comando: 'rake db: migrate RAILS_ENV =" production "'. Por favor, publique su comentario para que pueda marcarlo como la mejor respuesta. – Zakaria

Respuesta

5
  1. Asegúrese de que se le han acabado las migraciones de bases de datos en el servidor de producción

  2. mesas de edición manual es una enorme no no en Rails. Te dará más dolores de cabeza de lo que vale. Si necesita cambiar algo, es mucho mejor generar una nueva migración para cambiarlo, incluso si es solo un cambio de nombre. (Sin embargo, puede deshacer los cambios de db, eliminar esa última migración y crear una nueva, pero como dije, es más problemático de lo que vale)

  3. Asegúrese de que el archivo xml del esquema sea correcto o al menos coincida con el real esquema. Puede eliminar esto y ejecutar rake: db: migrate para generar uno nuevo.
+0

Gracias por su información. – Zakaria

0

Puede asignar el nombre de la tabla para modelos ActiveRecord para evitar estos errores de error.

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