PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreurs dans les évolutions sur Heroku

Si vous envoyez à Heroku 1.sql fichier généré pour H2 , il y a de grandes chances qu'ils entrent en conflit, à la place, définissez l'URL de Heroku dans application.conf comme db.default.url et exécutez-le d'abord en mode dev sur localhost pour générer un Postres SQL valide. Vous devrez également commenter le db.default.user et db.default.password paramètres, car l'URL de Heroku contient déjà ces informations.

Si vous ne connaissez pas l'URL de la connexion actuelle, vous la trouverez sur :

https://postgres.heroku.com/ -> YourDBs -> nom-bd -> Connection settings -> JDBC URL

Pour vous connecter depuis localhost (ou une autre machine, pas dans l'espace Heroku), vous devez ajouter ce paramètre à l'URL :

&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

Grâce à cette approche, vous pouvez tester votre application localement avec une connexion établie à la base de données Heroku distante (ne soyez pas surpris - cette combinaison sera beaucoup plus lente que de travailler avec local app + local DB ou Heroku app + Heroku DB ) de toute façon, pour tester, c'est mieux que de pousser à plusieurs reprises de petites corrections vers le cloud.

Vous pourrez également effectuer des évolutions à partir de localhost - sans pousser le code vers Heroku, et c'est une approche vraiment plus courte si vous avez des problèmes dans votre SQL.

De plus, c'est une bonne occasion d'activer la journalisation SQL en mode de développement local et de rechercher les requêtes SQL redondantes. Si vous supprimez toutes les requêtes inutiles et que vous serez satisfait sur localhost, après le déploiement sur Heroku, vous serez simplement beaucoup plus satisfait :)

Réinitialiser

Si vous créez le bon 1.sql fichier que vous aurez probablement besoin de réinitialiser votre base de données contenant une structure invalide (car je suppose que ce n'est pas encore un problème car vous venez de passer de local à Heroku). Trouvez d'abord un nom de la base de données pour l'application actuelle (avec bash, dans le dossier de l'application) :

heroku pg

Et puis réinitialisez-le avec (cela détruira toutes les données, pensez donc d'abord à sauvegarder si vous ne voulez pas perdre vos données !) :

heroku pg:reset HEROKU_DATABASE_SOMEBASE