sql >> Database >  >> RDS >> PostgreSQL

Fouten in evoluties op Heroku

Als je naar Heroku verzendt 1.sql bestand gegenereerd voor H2 , is er een grote kans dat ze conflicteren, stel in plaats daarvan de url van de Heroku in application.conf als db.default.url en voer het eerst uit in dev-modus op localhost om geldige Postres SQL te genereren. U moet ook commentaar geven op de db.default.user en db.default.password instellingen, aangezien de URL van Heroku deze informatie al bevat.

Als u de URL van de huidige verbinding niet weet, kunt u deze vinden op:

https://postgres.heroku.com/ -> YourDBs -> db-naam -> Connection settings -> JDBC URL

Om verbinding te maken vanaf localhost (of een andere machine, niet in de Heroku's ruimte) moet je deze parameter aan de URL toevoegen:

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

Dankzij deze aanpak kun je je applicatie lokaal testen met een gevestigde verbinding met de database van Heroku op afstand (wees niet verbaasd - die combinatie zal veel langzamer zijn dan werken met local app + local DB of Heroku app + Heroku DB ) voor het testen is het in ieder geval beter dan herhaaldelijk kleine reparaties naar de cloud te pushen.

Je kunt ook evoluties uitvoeren vanuit localhost - zonder de code naar Heroku te pushen, en het is echt een kortere aanpak als je problemen hebt met je SQL.

Bovendien is het een goede gelegenheid om SQL-logboekregistratie in de lokale dev-modus in te schakelen en op zoek te gaan naar overbodige SQL-query's, als u alle niet-noodzakelijke query's verwijdert en tevreden bent op localhost, na implementatie op de Heroku, zult u gewoon veel meer tevreden zijn:)

Resetten

Als u de juiste 1.sql . maakt bestand dan zal je hoogstwaarschijnlijk je DB met een ongeldige structuur moeten resetten (omdat ik aanneem dat dit nog geen probleem is, aangezien je net van lokaal naar Heroku gaat). Zoek eerst een naam van de DB voor de huidige app (met bash, in de map van de app):

heroku pg

En reset het dan met (het zal alle gegevens vernietigen, dus overweeg eerst een back-up als u uw gegevens niet kwijt wilt raken!):

heroku pg:reset HEROKU_DATABASE_SOMEBASE


  1. Waar haal ik de libpq-bron vandaan?

  2. Hoe een RefCursor van de Oracle-functie te retourneren?

  3. @GeneratedValue polymorfe abstracte superklasse over MySQL

  4. Normalisatie in MYSQL