[RUBY] [Rails] Was ist zu tun, wenn Rails db: migrate nicht ausgeführt werden kann, da keine Tabelle vorhanden ist, auf die der externe Schlüssel verweist?

Fehlerort

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?

Fazit

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 e1347bffe8989928198807e72930578c.png 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

[Rails] Was ist zu tun, wenn Rails db: migrate nicht ausgeführt werden kann, da keine Tabelle vorhanden ist, auf die der externe Schlüssel verweist?
[Rails] Was tun, wenn der Fehler Keine Datenbank ausgewählt und Unbekannte Datenbank in db: migrate angezeigt wird?
[React.useRef] Was tun, wenn im Ereignis-Listener nicht auf den neuesten Status verwiesen werden kann?
[Rails] Was tun, wenn Sie einen Fehler generieren möchten, der nicht behoben werden kann, wenn externe Schlüsselbeschränkungen angewendet werden?
Was tun, wenn rbenv sagt, dass es keine Readline- oder Lib-Historie gibt?
% Rails DB: Beim Erstellen ist der durch Mimemagic verursachte LoadError
Was tun, wenn der Befehl adb nicht ausgeführt werden kann?
[Schienen] Was tun, wenn die Ansicht zusammenbricht, wenn eine Nachricht mit der Fehlermethode angezeigt wird?
Was ist mit dem Fehler "Kann nicht gelesen werden oder ist keine gültige ZIP-Datei?" Zu tun
Was tun, wenn die App nicht mit der neuesten Rails-Version erstellt wurde, die bei neuen Rails installiert wurde?
[Rails] Was tun, wenn keine Daten in der Datenbank registriert sind?
Was tun, wenn Cloud 9 im Rails-Lernprogramm voll ist?
Die Geschichte, mit der ich zu kämpfen hatte, weil ich "Rails db: migrate" nicht machen konnte.
Rails-Tutorial Wenn Rails aufgrund unterschiedlicher Versionen nicht neu erstellt werden können
[Rails / Docker] Was tun, wenn der Browser (localhost: 3000) nach dem Hinzufügen eines Edelsteins den Zugriff verweigert?
[IOS] Was tun, wenn das Bild mit einer Farbe gefüllt ist?
Was tun, wenn CentOS nicht mit VirtualBox unter Catalina gestartet werden kann?
Was tun, wenn in Java der Fehler "Nicht statische Variable x kann nicht aus dem statischen Kontext referenziert werden" angezeigt wird. Lehren aus dem ersten Schritt der Programmierung Hinweis 01
Was tun, wenn der Build mit dem Fehler "Mit Swift x.x.x kompiliertes Modul kann vom Swift x.x.x-Compiler nicht importiert werden" fehlschlägt.
[Schienen] Was tun, wenn das Refile-Bild beim Schreiben der Verarbeitung zum Zeitpunkt des Routing-Fehlers nicht angezeigt wird?
Was tun, wenn die Meldung "Ein Server läuft bereits" angezeigt wird. Fehler beim Versuch, den Rails-Server zu starten
[Rails] Ich möchte alles zurücksetzen, weil die Daten in der lokalen Umgebung falsch sind! Was ist vorher zu tun?
Was tun, wenn das Laden der SPA-URL von WebView nicht erkannt werden sollte
Was zu tun ist, wenn es ungültig ist, weil es nicht mit einem '-' beginnt
[Ubuntu] Was tun, wenn MongoDB aufgrund eines SocketException-Fehlers nicht gestartet werden kann?
[Rails] Das Textlicht von Bootstrap kann nicht von der link_to-Methode geerbt werden, da die Klasse nicht als Argument in der Methode geschrieben ist.
So lösen Sie, wenn Sie mit einem neuen Container keine Verbindung zur Datenbank herstellen können, weil der Port dem vorhandenen Docker-Container zugewiesen ist
Was macht [Rails DB: Migrieren]?
Was ist nach der Installation von 'devise' 'bootstrap' von gemfile with Rails zu tun, wenn url ein Fehler ist?
Was ist zu tun, wenn in Eclipse "Fehler beim Laden der gemeinsam genutzten JNI-Bibliothek" angezeigt wird?
Was tun, wenn die bereits verwendete Adresse nach dem Ausführen der Schienen angezeigt wird?
Was tun, wenn ein Fehler in Rails auftritt? DB: migrate ((StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :))
Was tun, wenn ein Fehler auftritt (StandardError: Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen :) in Rails db: migrate
Was tun, wenn der Rails-Server nicht gestartet werden kann?
Was tun, wenn das SSL-Zertifikat abgelaufen ist?
Was tun, wenn der Rails-Server nicht gestoppt werden kann?
ParseException: Was tun, wenn ein nicht analysierbares Datum erreicht ist?
[Witz] Was tun, wenn bei Verwendung von Mixxx unter Ubuntu 20.04 die ungültige Abtastrate erreicht ist?
Was tun, wenn das Git-Repository nicht im Azure Team Explorer für Eclipse angezeigt werden kann?