Ce sera une note d'apprentissage.
Cette fois, nous traiterons l'erreur qui se produit après l'exécution de $ rails db: migrate ou $ rails db: migrate.
== 20200107095832 CreateMicroposts: migrating =================================
-- create_table(:microposts)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "microposts" already exists: CREATE TABLE "microposts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "content" text, "user_id" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
Suite ci-dessous
Je pense qu'il y a quelque chose qui ne va pas avec la migration de la commande que j'ai faite la dernière fois. Probablement, une erreur s'est produite au milieu du processus de migration et la table a été générée, mais la migration qui a généré la table reste non exécutée. Est-ce dans un tel état? je pense
①
$ rails db:migrate:reset
Après la réinitialisation de la base de données
$ rails db:migrate
Migrer à nouveau
Cette commande est utilisée lorsque vous souhaitez supprimer la base de données, modifier le nouveau fichier de migration et effectuer à nouveau la migration.
②
$ rails db:migrate:reset
Une erreur se produit après la réinitialisation de la base de données!
ActiveRecord::NoEnvironmentInSchemaError:
Environment data not found in the schema. To resolve this issue, run:
bin/rails db:environment:set RAILS_ENV=development
Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
rake db:migrate:status
Vérifiez l'état de db avec la commande ci-dessus. ⬇︎ Contenu d'exécution
up 20201013130002 Devise create users
down 20201015132219 Add devise to users
Apparemment, le fichier de migration en bas est suspect. .. .. J'ai vérifié l'éditeur Je créais deux fois le même fichier de migration. .. Alors, essayez de supprimer le fichier de migration en bas.
$ rm -rf db/migrate/20201015132219_add_devise_to_users.rb
Cela va migrer à nouveau. ⬇︎ Résultat de l'exécution
== 20201013130002 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0061s
-- add_index(:users, :email, {:unique=>true})
-> 0.0014s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0011s
== 20201013130002 DeviseCreateUsers: migrated (0.0087s) =======================
J'ai pu le faire sans aucun problème!
Cette fois, j'ai appris les erreurs lors de la migration. La réinitialisation de la base de données n'a pas résolu le problème. La cause était un fichier de migration en double.
Je vous serais reconnaissant si vous pouviez signaler des erreurs.
Recommended Posts