rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'first_app_development.users' doesn't exist
Il n'y a pas de table utilisateur à référencer! Est en colère. Pourquoi cela arrive-t-il?
Le fichier de la table des utilisateurs auquel la table des messages veut faire référence a été généré après la table des messages.
**Que voulez-vous dire? ** **
rails g model:message
Après le
rails g model:user
Avez-vous causé l'erreur? Normalement, cet ordre doit être inversé. Étant donné que user: message a une relation un-à-plusieurs, le message doit faire référence à l'utilisateur.
_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
De cette façon, si vous ajoutez une clé étrangère: true à la colonne et que vous écrivez "Je ferai référence à la table utilisateur!", Cela signifie qu'une erreur se produira à moins que la table utilisateur référencée ne soit migrée en premier.
** Alors comment changer l'ordre des fichiers? ** ** La réponse est simple. Du fichier de migration Tout ce que vous avez à faire est de changer l'ordre des dates en cliquant avec le bouton droit de la souris et en modifiant le nom du fichier.
Remplacé et encore
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) =========================
C'est fait ^^