2011-07-21 6 views
6

J'ai développé une application simple rails qui fonctionne parfaitement sur ma machine de développement.Rails: erreur "Impossible de trouver la table"

Lorsque je l'ai mis sur le serveur de production (Phusion passagers/Nginx), il me retourne cette erreur dans le fichier my_app/log/production.log:

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

Qu'est-ce qui ne va pas? PS: Après une erreur de dénomination, le nom de la table a été modifié manuellement, mais il fonctionne très bien en mode développement. Je ne soupçonne pas cette erreur malsaine.

+3

avez-vous déjà lancé 'rake db: migrate' sur votre serveur? – stephenmurdoch

+3

En effet. J'ai oublié d'exécuter la commande suivante: 'rake db: migrate RAILS_ENV =" production "'. S'il vous plaît, postez votre commentaire afin que je puisse le marquer comme la meilleure réponse. – Zakaria

Répondre

5
  1. Assurez-vous que vous avez exécuté votre migration de bases de données sur le serveur de production

  2. tables d'édition manuelle est un énorme non non dans Rails. Cela vous donnera plus de maux de tête que cela en vaut la peine. Si vous avez besoin de changer quelque chose, vous préférez générer une nouvelle migration pour la modifier, même s'il s'agit simplement d'un changement de nom. (Vous pouvez cependant annuler les modifications de base de données, supprimer cette dernière migration et en créer une nouvelle - mais comme je l'ai dit - cela pose plus de problèmes que de valeur)

  3. Assurez-vous que votre fichier xml de schéma est correct ou au moins correspondant au réel schéma. Vous pouvez supprimer ceci et lancer rake: db: migrate pour en générer un nouveau.
+0

Merci pour votre information. – Zakaria

0

Vous pouvez souvent attribuer un nom de table aux modèles ActiveRecord pour éviter ces erreurs nominatives.

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