Dies wird eine Lernnotiz sein.
Dieses Mal werden wir uns mit dem Fehler befassen, der nach dem Ausführen von $ Rails db: migrate oder $ Rails db: migrate auftritt.
== 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)
Fortsetzung unten
Ich denke, mit der Migration des Befehls, den ich das letzte Mal ausgeführt habe, stimmt etwas nicht. Wahrscheinlich ist in der Mitte des Migrationsprozesses ein Fehler aufgetreten, und die Tabelle wurde generiert, aber die Migration, die die Tabelle generiert hat, bleibt nicht ausgeführt. Ist es in einem solchen Zustand? Ich denke
①
$ rails db:migrate:reset
Nach dem Zurücksetzen der Datenbank
$ rails db:migrate
Migrieren Sie erneut
Dieser Befehl wird verwendet, wenn Sie die Datenbank löschen, die neue Migrationsdatei ändern und die Migration erneut durchführen möchten.
②
$ rails db:migrate:reset
Nach dem Zurücksetzen der Datenbank tritt ein Fehler auf!
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
Überprüfen Sie den Status von db mit dem obigen Befehl. ⬇︎ Ausführungsinhalt
up 20201013130002 Devise create users
down 20201015132219 Add devise to users
Anscheinend ist die Migrationsdatei unten verdächtig. .. .. Ich habe den Editor überprüft Ich habe dieselbe Migrationsdatei zweimal erstellt. .. Versuchen Sie also, die Migrationsdatei unten zu löschen.
$ rm -rf db/migrate/20201015132219_add_devise_to_users.rb
Dies wird erneut migriert. ⬇︎ Ausführungsergebnis
== 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) =======================
Ich konnte es ohne Probleme tun!
Diesmal habe ich Fehler bei der Migration erfahren. Das Zurücksetzen der Datenbank hat das Problem nicht gelöst. Die Ursache war eine doppelte Migrationsdatei.
Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.
Recommended Posts