java – 使用共享数据库和模型更新在Heroku上播放应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用共享数据库和模型更新在Heroku上播放应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1735字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用共享数据库和模型更新在Heroku上播放应用程序](/upload/InfoBanner/zyjiaocheng/892/2aaaf13c010844fabf4c295f68269a99.jpg)
我正在使用带有共享数据库的Heroku实例使用Play 1.2.3应用程序(Java).
我的问题是:部署应用程序后如何更新数据库模式?实际上,如何初始化数据库,因为它最初为空并且PROD模式下的Hibernate ddl被禁用?
关于我尝试的选项:
> Hibernate ddl auto在生产中是一个很大的禁忌
> Play Evolutions如果你使用Hibernate会很麻烦,他们在开发过程中给我太多问题来使用它们或者依赖它们
> Heroku共享数据库(免费选项或20gb选项)不提供Psql控制台访问权限,因此您无法通过脚本手动执行(如我所愿)
这是一个问题,因为免费数据库(15美元/月)与提供Psql访问权限(200美元/月)的最便宜选项之间的成本差异很大,而对于自助式“测试水域”网站来说,这很重要.
你有没有这个问题?你是怎么解决的?
解决方法:
Heroku共享数据库的一个替代方案是在AWS上使用另一个数据库(您自己的EC2服务器或RDS数据库).
但是,如果您想坚持使用共享数据库,则需要某种方法在Heorku上执行db脚本.有几种不同的方法可以做到这一点. Play Evolutions是一个选项,但由于您不想使用它们,您可以使用类似iBatis ScriptRunner的东西.创建一个可以运行sql脚本的简单Java应用程序.这是一个非常简单的例子:
String dbUri = System.getenv("DATABASE_URL");
Class.forName("org.postgresql.Driver");
String username = dbUri.getUserInfo().split(":")[0];
String password = dbUri.getUserInfo().split(":")[1];
String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath() + "?user=" + username + "&password=" + password;
Connection connection = DriverManager.getConnection(dbUrl);
InputStreamReader inputStreamReader = new InputStreamReader(ClassLoader.getSystemResourceAsStream(sqlFile));
Reader reader = new BufferedReader(inputStreamReader);
ScriptRunner scriptRunner = new ScriptRunner(connection, false, true);
scriptRunner.runScript(reader);
只需在app dir中的某个地方添加类似于某个类的东西,然后运行它:
heroku run "java -cp lib/postgres.jar:tmp/classes foo.SchemaCreator"
内容总结
以上是互联网集市为您收集整理的java – 使用共享数据库和模型更新在Heroku上播放应用程序全部内容,希望文章能够帮你解决java – 使用共享数据库和模型更新在Heroku上播放应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。