我是heroku的新手,我已经创建了一个在heroku运行的java应用程序。我现在想为应用程序创建一个更高级的数据库,我想上传数据库模式。我从heroku下载的java示例应用程序显示了由代码中的字符串文字构成的表。我想制作一个高级架构并上传。这是可能的还是我需要从代码中创建表?
由于
答案 0 :(得分:2)
数据库迁移的一种常见方法是将它们作为部署过程的一部分运行,这与Heroku无关 - 它只是应用程序代码所需的升级基础架构的一部分。
在部署过程中运行迁移会将其与应用程序代码完全分开,因此您不必担心将其包含在应用程序中。
为避免在部署期间接受任何请求,建议您先启用应用程序的维护模式。
heroku maintenance:on --app myapp
# push to Heroku which will trigger the buildpack to run
git push git@heroku.com:myapp.git master
# Use migration tool of your choice, this example is using migrate
# https://github.com/mattes/migrate which supports a number of
# different database systems. Make sure to use the DATABASE_URL that
# is set in your application's environment variables.
migrate -database $(heroku config:get DATABASE_URL --app myapp) \
-path ./migrations up
heroku maintenance:off --app myapp
请注意,上面的示例不包含任何错误处理,例如,如果部署到Heroku失败或如何从失败的数据库迁移中恢复,如何继续。此外,在迁移开始之前创建数据库快照/备份可能是个好主意。
我在示例中包含migrate,因为它支持PostgreSQL,MySQL,SQLite和一堆其他数据库。但是,根据您的要求,任何迁移工具都可以。