[RAILS] Erreur de base de données concernant le déploiement à l'aide d'Heroku

Dans cet article, j'expliquerai de manière facile à comprendre comment j'ai pu résoudre l'erreur survenue lors du déploiement avec Heroku.

introduction

-L'application déployée sera créée avec le curriculum TECH_CAMP.

・ Parce que l'affiche est un débutant, il / elle peut publier des informations incorrectes. À ce moment-là, je vous serais reconnaissant si vous pouviez le signaler sans hésitation.

Étapes prises pour le déploiement

  1. Installez Heroku CLI → Pour accéder à Heroku depuis le terminal. Exécutez la commande suivante dans le terminal.
brew tap heroku/brew && brew install heroku
  1. Connectez-vous à Heroku Vous pouvez vous connecter à l'aide de la commande suivante.
heroku login --interactive

~~ 3. Installez rails_12factor Gem. ~~ ~~ → Gem requis pour exécuter l'application Rails sur Heroku. ~~

La gemme Rails_12factor n'est plus nécessaire dans Rails 5 et versions ultérieures. </ b>

Pour plus de détails, consultez l'article Qiita ici.

  1. Créez une application sur Heroku.
heroku créer le nom de l'application
  1. Rendre MySQL disponible sur Heroku. → La base de données par défaut de Heroku est PostgreSQL. Puisque cette application Rails a construit une base de données avec MySQL, elle doit être définie pour être appliquée.
heroku addons:add cleardb
  1. Vous pouvez maintenant utiliser MySQL sur Heroku, mais vous devez également modifier les paramètres de Gem.
heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`

Vous avez maintenant attribué l'URL de la base de données ClearDB à une variable appelée heroku_cleardb.

heroku config:set DATABASE_URL=mysql2${heroku_creardb:5}

DATABASE_URL a été réinitialisé par config: set.

  1. Définissez la valeur de master.key à l'aide de la variable d'environnement. → Pour des raisons de sécurité, master.key n'est pas géré par Git, il ne peut donc pas être déployé sur Heroku tel quel. En définissant la valeur de taster.key comme variable d'environnement, il peut être utilisé sur Heroku.
heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
  1. Appuyez sur l'application.
git push heroku master
  1. Effectuez la migration sur Heroku. → En utilisant la commande heroku run, vous pouvez également utiliser la commande rails sur Heroku.
heroku run rails db:migrate
  1. Confirmez la publication.
heroku apps:info

A été exécuté pour passer à l'URL affichée.

Erreur et hypothèse survenues

error massage

Lors de la transition vers l'URL, l'écran d'erreur ci-dessus est apparu.

Par conséquent, je suis retourné au terminal et j'ai vérifié le journal des erreurs.

heroku logs --tail

Le journal des erreurs a été affiché avec la commande ci-dessus. La première chose que j'ai remarquée a été

2020-11-11T22:07:09.588453+00:00 (omis) dyno=web.1 connect=14ms service=35ms status=500 bytes=1827 protocol=https

Depuis status = 500, on peut voir qu'il s'agit d'un problème côté serveur.

Si vous regardez de plus près,

 Mysql2::Error::ConnectionError (Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)):

Alors, MySQL n'est-il pas reconnu sur Heroku? J'ai pensé </ b>.

Résolu sur la base d'une hypothèse

En regardant le code du terminal, j'ai également trouvé quelque chose d'étrange dans les paramètres MySQL.

nayuta@MacBookPro-Nayuta ajax_app % heroku_cleardb='heroku config:get CLEARDB_DATABASE_URL'
nayuta@MacBookPro-Nayuta ajax_app % heroku config:set DATABASE_URL=mysql2${heroku_creardb:5}
Setting DATABASE_URL and restarting ⬢ ajax-app-30306... done, v5
DATABASE_URL: mysql2

DATABASE_URL n'est pas stocké correctement.

Mon résultat


DATABASE_URL: mysql2

Résultat correct


DATABASE_URL: mysql2://000000000000:[email protected]/heroku_aaa00000000?reconnect=true

Je pensais qu'il n'y avait pas d'erreur ici, mais en regardant le travail effectué à l'étape 6, il n'y avait pas de faute d'orthographe dans la commande et il semblait qu'elle avait été saisie correctement.

Votre contribution


heroku_cleardb='heroku config:get CLEARDB_DATABASE_URL'

Corriger l'entrée


heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`

J'ai regardé le code, l'ai regardé et finalement découvert.

Là où il aurait dû être inclus dans `` (citation arrière), il a été inclus dans '' (revêtement unique).

C'était une erreur très simple, mais j'ai été distrait par les fautes d'orthographe et j'ai été en retard pour le remarquer.

nayuta@MacBookPro-Nayuta ajax_app % heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
nayuta@MacBookPro-Nayuta ajax_app % heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
Setting DATABASE_URL and restarting ⬢ ajax-app-30306... done, v12
DATABASE_URL: mysql2://bf691ece578431:[email protected]/heroku_b4193d2f6e19e50?reconnect=true

Si vous le placez correctement entre ``, la réinitialisation de l'URL est terminée.

Cependant, même si vous le poussez tel quel, le message d'erreur suivant apparaîtra, donc

Everything up-to-date

J'ai fait un commit vide et je l'ai fait pousser ensemble.

 git commit --allow-empty -m "Validation vide"
 git push heroku master 

Il semble qu'il ait été poussé normalement, donc lorsque je suis passé à l'URL, l'application créée a été déployée.

Sommaire

J'ai fait attention aux fautes d'orthographe car les fautes de frappe provoquent souvent des erreurs, mais je n'ai jamais imaginé que je ferais des fautes de frappe dans '' et ``. C'était une erreur très terrible, mais j'ai eu de la chance car la valeur d'expérience de "J'ai fait une erreur à cause d'une telle erreur!" A augmenté.

Recommended Posts