rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'first_app_development.users' doesn't exist
Es gibt keine Benutzertabelle zum Referenzieren! Ist wütend. Warum passiert das?
Die Datei der Benutzertabelle, auf die die Nachrichtentabelle verweisen möchte, wurde nach der Nachrichtentabelle generiert.
**Was meinst du? ** **.
rails g model:message
Nach dem
rails g model:user
Hast du den Fehler verursacht? Normalerweise sollte diese Reihenfolge umgekehrt werden. Da user: message eine Eins-zu-Viele-Beziehung hat, muss sich die Nachricht auf den Benutzer beziehen.
_create_messages.rb
class CreateMessages < ActiveRecord::Migration[6.0]
def change
create_table :messages do |t|
t.string :image
t.references :user, foreign_key: true
t.timestamps
end
end
end
Auf diese Weise bedeutet dies, dass ein Fehler auftritt, wenn Sie der Spalte "Foreign_key: true" hinzufügen und "Ich verweise auf die Benutzertabelle!" Schreiben, es sei denn, die referenzierte Benutzertabelle wird zuerst migriert.
** Wie ändere ich dann die Reihenfolge der Dateien? ** **. Die Antwort ist einfach. Von der Migrationsdatei Sie müssen lediglich die Reihenfolge der Daten ändern, indem Sie mit der rechten Maustaste klicken und den Dateinamen bearbeiten.
Ersetzt und wieder
rails db:migrate
== 20200814114004 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.1215s
== 20200814114004 CreateUsers: migrated (0.1216s) =============================
== 20200815114016 CreateMessages: migrating ===================================
-- create_table(:messages)
-> 0.0479s
== 20200815114016 CreateMessages: migrated (0.0480s) =========================
Es ist geschafft ^^
Recommended Posts