使用h2-browser访问播放项目数据库

nun*_*nos 25 h2 playframework playframework-2.0

我有一些麻烦,通过访问MEM数据库h2-browser上的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=""
Run Code Online (Sandbox Code Playgroud)

CONF

bie*_*ior 24

当您实际使用内存数据库时,您正在访问两个不同的数据库(尽管使用相同的路径).你有两个解决方案:

  1. 首先从您的控制台启动裸'play'控制台,运行h2-browser并最终运行您的应用程序(在同一个play控制台内)
  2. 服务器模式下运行H2,这种方法的额外好处是,当每个应用程序重新启动时,您不会因数据库存储在文件中而丢失数据.然后,您可以从许多点(也可以从'独立'H @浏览器或其他GUI)访问此数据库,其路径类似于:

Unix(~指你的主目录)

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

或Windows

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

请注意,为了在生产模式下获得最佳性能,值得切换回嵌入模式,但对于开发阶段,解决方案应该足够好(仍然比示例MySQL更快)

  • 我也尝试过解决方案1,并遇到同样的问题.我启动Play控制台,运行h2-browser,登录h2浏览器网页.然后使用相同的控制台,我运行"运行".访问我的网站时,我收到"无法连接到数据库[默认]".我错过了什么吗?连接字符串是"jdbc:h2:mem:play",我正在使用Play 2.2.1 (2认同)

Mar*_*tin 20

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

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

请注意,上述设置必须与您的实际配置相匹配(db.default.url依此类推).