2013-04-13 52 views
19

我在Play框架项目上通过h2-browser访问mem数据库时遇到了一些问题。使用h2浏览器访问play项目数据库

下面的配置,我认为是正确的(显然不是!)我得到一个h2浏览器,但没有表(即模式,即是),即使我已经应用了一些迁移。

我在这里错过了什么?提前致谢。

CONF/application.conf:

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:play" 
db.default.user=sa 
db.default.password="" 

conf

回答

22

当使用在-MEM数据库实际上要访问两个不同的数据库(尽管具有相同的路径)。有两种解决方法:

  1. 从控制台首先启动裸“玩”控制台,运行H2浏览器终于​​在server mode运行你的应用程序(withinh相同play控制台)
  2. 运行H2,从这个额外beneffit方法是事实是,当数据库存储在文件中时,每次应用程序的重新启动都不会丢失数据。然后你就可以从多点访问该数据库(也由“独立” H +浏览器或其他一些GUI)与路径类似于:

UNIX(~意味着你的home目录)

db.default.url="jdbc:h2:tcp://localhost/~/some/path/to/MyPlayDB"

或Windows

db.default.url="jdbc:h2:tcp://localhost/c:/some/path/to/MyPlayDB"

注意,对于在生产模式下最佳的性能是值得切换回至E mbedded模式,但是对于开发阶段,解决方案应该足够好(仍然比示例MySQL快)

+0

我试过你的解决方案1,表格仍然不显示。所以这个问题的实际答案是使用解决方案2? – nemoo

+0

@nemoo - 刚刚通过全新Play 2.2.0测试 - 第一种方法按要求工作_still_ – biesior

+2

我也尝试过解决方案1,并且遇到同样的问题。我开始播放控制台,运行h2浏览器,登录到h2浏览器网页屏幕。然后使用相同的控制台,我运行“运行”。当访问我的网站时,我得到“无法连接到数据库[默认]”。我错过了什么吗?连接字符串是“jdbc:h2:mem:play”,我使用Play 2.2.1 – according2me

16

要通过H2 Web Console浏览数据库的内容,请同时启动Web控制台和Play应用程序通过游戏控制台:

  1. 首先,通过运行类型安全激活进入游戏控制台:
    ~/Projects/play-app $ activator
  2. 启动Web控制台:
    [play-app] $ h2-browser
    这应该打开您的浏览器中的H2控制台界面。
  3. 运行Play应用程序:
    [play-app] $ run
  4. 在您的浏览器中访问Play应用程序。这将导致Play应用程序连接到内存中的H2数据库,并使用一些默认数据(如果有)初始化它。
  5. 登录到您的浏览器的H2 Web控制台来检查数据库内容。使用以下设置(,例如作为Play-App In-Memory Database),你可以保存到再次轻松访问它们:
    • 驱动程序类:org.h2.Driver
    • JDBC网址:jdbc:h2:mem:play
    • 用户名:sa
    • 密码:<blank>

注意上面的设置必须符合您的实际configurati (db.default.url等)。

+0

这适用于我!谢谢 ;-) –

相关问题