J'ai créé un modèle nommé Categorie dans mon application Rails. En raison d'une erreur, j'ai dû retirer le modèle.Rails: rake abandonné en raison d'une table déjà existante mais impossible de l'enlever
Je couru
rails d model Categorie
qui a supprimé mon modèle existant.
J'ai oublié d'exécuter rails g migration DropTable
à ce moment-là.
Mais alors, je devais recréer le modèle Catégorie donc je couru:
rails g model Categorie name:string
Mais quand je veux courir rake db:migrate
je reçois l'erreur suivante:
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'categories' already exists: CREATE TABLE `categories` ...
Après cela, J'ai essayé de laisser tomber la table pour refaire tout le processus mais cela ne fonctionne pas, la table est toujours dans schema.rb
Je sais qu'il n'est pas recommandé de le faire manuellement à partir de le fichier c'est pourquoi je voudrais savoir si quelqu'un sait quelque chose à ce sujet. Je sais que c'est une erreur idiote mais maintenant je ne sais pas comment résoudre ce problème.
Voici comment j'ai essayé de laisser tomber la table:
rails g migration DropCategories
def change
drop_table :categories
end
rake db:migrate
Je pense qu'il ya un problème avec la suppression de la table, car voici la sortie quand j'émigre la base de données:
== 20170509123739 CreateCategories: migrating =================================
-- create_table(:categories)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'categories' already exists: CREATE TABLE `categories` (`id` int(11) auto_increment PRIMARY KEY, `name` varchar(255), `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB
Rails semble créer une table et ne pas supprimer celui que je veux.
Comment avez-vous essayé de laisser tomber la table? Le message d'erreur arrive parce que la table est toujours dans votre base de données MySQL, pas parce qu'elle est dans 'schema.rb'. Si vous utilisez un client MySQL pour supprimer la table, votre migration devrait réussir, quoi qu'il en soit dans 'schema.rb'. – Brian
@Brian j'ai fait des rails de migration DropCategories et puis j'ai modifié le fichier de migration avec drop_table: catégories – justinedps26
Vous pouvez essayer de restaurer (rake db: rollback), puis modifier vos fichiers de migration de sorte que vous avez seulement un fichier qui crée la table . N.B: une restauration ramène le schéma à la version précédente. –