PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Erros nas evoluções no Heroku


Se você estiver enviando para Heroku 1.sql arquivo gerado para H2 , há uma grande chance de que eles entrem em conflito, em vez disso, defina a url do Heroku em application.conf como db.default.url e execute-o no modo dev no host local primeiro para gerar um SQL Postres válido. Além disso, você precisará comentar o db.default.user e db.default.password configurações, pois a URL do Heroku já contém essa informação.

Se você não souber o URL da conexão atual, você o encontrará em:

https://postgres.heroku.com/ -> YourDBs -> nome do banco de dados -> Connection settings -> JDBC URL

Para conectar de localhost (ou outra máquina, não no espaço do Heroku) você precisa adicionar este parâmetro à URL:
&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

Graças a essa abordagem, você pode testar seu aplicativo localmente com uma conexão estabelecida com o banco de dados remoto do Heroku (não se surpreenda - essa combinação será muito mais lenta do que trabalhar com local app + local DB ou Heroku app + Heroku DB ) de qualquer forma, para testar, é melhor do que enviar pequenas correções repetidamente para a nuvem.

Além disso, você poderá realizar evoluções do localhost - sem enviar o código para o Heroku, e é uma abordagem realmente mais curta se você tiver problemas em seu SQL.

Além disso, é uma boa ocasião para ativar o log SQL no modo de desenvolvimento local e procurar consultas SQL redundantes, se você remover todas as consultas desnecessárias e ficar satisfeito no localhost, após a implantação no Heroku, você ficará muito mais satisfeito:)

Redefinir


Se você criar o 1.sql adequado arquivo do que provavelmente você precisará redefinir seu banco de dados contendo estrutura inválida (como suponho que isso ainda não seja um problema, pois você acabou de passar do local para o Heroku). Primeiro encontre um nome do banco de dados para o aplicativo atual (com bash, na pasta do aplicativo):
heroku pg

E, em seguida, redefina-o com (isso destruirá todos os dados, portanto, considere o backup primeiro se não quiser perder seus dados!):
heroku pg:reset HEROKU_DATABASE_SOMEBASE