26

我在通过h2-browseron a Playframework 项目访问 mem 数据库时遇到了一些问题。

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

我在这里想念什么?提前致谢。

conf/application.conf:

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

会议

4

2 回答 2

25

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

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

Unix(~表示您的主目录)

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

或窗户

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

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

于 2013-04-13T20:35:57.437 回答
21

要通过H2 Web 控制台浏览数据库的内容,请通过同一个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 网址:jdbc:h2:mem:play
    • 用户名:sa
    • 密码:<blank>

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

于 2014-08-24T09:20:48.130 回答