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