Pour Deploy to heroku, exécutez "% git push heroku master" et Erreur lors de l'exécution de la commande suivante
Terminal
% heroku run rake db:migrate
L'erreur après l'exécution de la commande ci-dessus est la suivante
Terminal (partie de la déclaration d'erreur)
PG::UndefinedTable: ERROR: relation "XXXXXX" does not exist
#"XXXXXX"Nom de la table
Omis ci-dessous
Parce que le nom de la table intermédiaire a été inclus dans l'instruction d'erreur Il s'avère que c'est une erreur liée à la table.
Parce que cela fonctionnait bien localement Je pense que cette fois, il y a des erreurs qui ne peuvent être rencontrées que dans l'environnement de production.
J'ai commis une erreur dans l'ordre dans lequel les fichiers de migration ont été créés. (Phénomène dans le cas de herok)
Migrer avec herok (% heroku run rake db: migrate) Cela se fait dans l'ordre de la date de création.
Cette fois, créez d'abord un fichier lié à la table intermédiaire (table song_discs), Plus tard, j'ai créé un fichier sur la table (table des disques) sur cette table. Ce sera une erreur causée par cela. Bref, je pense que la table intermédiaire peut être créée plus tard.
Il a été décrit dans le fichier de migration de la table intermédiaire. Puisque je travaille en touchant le fichier, je le copie (sauvegarde) dans un autre emplacement pour ne pas avoir à m'inquiéter si le contenu est perdu. ❗️ Veuillez vous assurer de lire ❗️ En tant que processus pour changer l'ordre de création des fichiers Supprimez le fichier! Le contenu disparaîtra également! "Je veux utiliser la description dans le fichier telle quelle!" "Je ne veux pas changer le contenu!" À ce stade, veuillez copier la description dans le fichier (pour la sauvegarde) quelque part. Veuillez noter que le contenu sera détruit lorsque le fichier sera supprimé.
Vous pouvez vérifier l'historique avec cette commande
Terminal
% bundle exec rake db:migrate:status
Vérifiez l'ID de migration pour connaître la version Ils sont classés dans l'ordre dans lequel ils ont été créés.
Exemple
database:nom de l'application_development
Status Migration ID Migration Name
--------------------------------------------------
up 20200723033017 Devise create users
up 20200727050028 Create songs
up 20200731024511 Create user songs
up 20200801063906 Create songcolors
down 20200821150924 Créer des disques de chansons ← La table intermédiaire est créée en premier.
up 20200821160923 Create discs
Depuis que j'ai créé une table intermédiaire appelée song_discs pour la première fois cette fois Supprimé pour recréer le fichier.
Le statut du fichier que vous souhaitez supprimer doit être "down".
Exemple
database:nom de l'application_development
Status Migration ID Migration Name
--------------------------------------------------
up 20200723033017 Devise create users
up 20200727050028 Create songs
up 20200731024511 Create user songs
up 20200801063906 Create songcolors
down 20200821150924 Create song discs
up 20200821160923 Create discs
S'il est "down" comme dans l'exemple ci-dessus, procédez au travail de suppression tel quel S'il est «haut», changez-le en «bas» puis supprimez-le. ("VERSION = ID de migration du fichier que vous souhaitez supprimer" peut être supprimé)
Exemple de commande pour réduire l'état
% rails db:migrate:down VERSION=20200821150924
Il peut être plus fiable de copier le nom du fichier de migration tel quel.
Terminal
% rm -rf db/migrate/Nom du fichier que vous souhaitez supprimer
Exemple
% rm -rf db/migrate/20200821150924_create_song_discs.rb
"% Bundle exec rake db: migrate: status" à nouveau S'il disparaît, la suppression est réussie
Exemple
database:nom de l'application_development
Status Migration ID Migration Name
--------------------------------------------------
up 20200723033017 Devise create users
up 20200727050028 Create songs
up 20200731024511 Create user songs
up 20200801063906 Create songcolors
up 20200821160923 Create discs
Exécutez la commande pour créer uniquement le fichier de migration.
Terminal
%rails g migration Le nom du fichier de migration que vous souhaitez créer
Exemple
% rails g migration create_song_discs
Un exemple du fichier complété est "20200912095202_create_song_discs.rb" Attention à ne pas oublier d'insérer create!
Il est sûr de vérifier l'historique avec "% bundle exec rake db: migrate: status" ici.
Modifier si nécessaire avant la migration de la base de données (C'est le contenu décrit sur les lieux.)
Dans mon cas cette fois, le contenu est le même que dans le fichier supprimé, donc J'ai collé ce que j'ai copié et enregistré à l'avance.
Étant donné que le statut ne peut pas rester "down", exécutez la commande suivante Changez pour "up".
% rails db:migrate
Aussi, je vais vérifier ici pour voir si cela fonctionne dans mon environnement local! Puisque je touche le fichier, je vais vérifier si quelque chose ne va pas et passer à l'étape suivante.
Si vous arrivez à ce point, les contre-mesures sont terminées, donc Essayez de déployer! !!
Comment faites-vous? Si vous avez des questions, veuillez cliquer ici. (https://qiita.com/kusaharajiji/items/9287235d56843c03734c)!
Je vous remercie pour votre travail acharné! !! L'avez-vous déployé? Je suis très heureux de résoudre l'erreur!
Pour le déploiement heroku Faites attention à l'ordre dans lequel les fichiers de migration sont créés!
J'ai beaucoup appris cette fois. Si vous le faites avec désinvolture, vous trébucherez simplement comme si vous disiez: "Vous ne comprenez pas ici!" Merci pour l'erreur. Pendant que j'écrivais l'article, j'ai trouvé un nouveau manque de compréhension.
① À propos des «haut» et «bas» qui apparaissent dans l'historique des fichiers de migration (2) Concernant les règles de création de fichiers de migration (est-ce limité à heroku?)
Je suis curieux de savoir cela aussi, alors j'aimerais l'écrire à nouveau, alors je l'enregistrerai ici.
Aussi, proposez d'autres solutions, Lors de la création d'un fichier de migration, j'ai essayé de le supprimer en inversant la commande pour créer un modèle (% rails g nom du modèle du modèle) et réessayer, mais cela semblait difficile car il y avait des fichiers qui avaient été supprimés plus que nécessaire, alors j'ai arrêté. Ta! Vous devez savoir ce que la commande de suppression supprimera ~ (Bien sûr ... lol)
Veuillez lire jusqu'au bout Merci beaucoup! A bientôt: détendu :: wave:
Recommended Posts