【问题标题】:Access mem or fs database tables using H2 console使用 H2 控制台访问 mem 或 fs 数据库表
【发布时间】:2011-09-10 02:13:09
【问题描述】:

我正在尝试在 Play 中访问我的应用程序的表格!框架,但我无法使用控制台找到它。 例如,我有两个实体模型:AddressCampus

我可以创建对象并正常保存,但我想查看 fs 或 mem DB 中的更改,但 H2 控制台没有显示表 AddressCampus。我使用默认设置登录localhost:9000/@db

我做错了什么?

提前致谢。

【问题讨论】:

  • 目前还不知道play框架……你的数据库URL是什么(如果这个框架有数据库URL的话)?
  • 感谢,这是 PlayFramework 的 H2 GUI,为我节省了大量寻找 GUI 的工作!

标签: playframework h2


【解决方案1】:

内存数据库的正确 URL 是:

jdbc:h2:mem:name-of-your-play-db

【讨论】:

  • 该url记录在日志信息中,您可以从那里获取。
【解决方案2】:

我采取的步骤让文件系统 H2 数据库控制台在我的应用程序位于 c:\play\myapp 的地方工作:

  1. 转到 localhost:9000/@db
  2. 在第一个框中选择通用 H2 服务器选项
  3. 对于网址输入jdbc:h2:file:c:/play/myapp/db/h2/play
  4. 用户名是sa 密码为空

【讨论】:

  • 是的,不要像我做的那样,在第 3 步中将 .h2 扩展名添加到播放文件名中!
【解决方案3】:

问题很可能是数据库 URL,因此您的应用程序和 H2 控制台使用不同的数据库。我建议使用jdbc:h2:~/data/test 形式的数据库URL,或者(可能更好)使用jdbc:h2:/data/test 形式的绝对路径,或者在使用Windows 时甚至使用驱动器号:jdbc:h2:c:/data/test。请参阅有关where the database files are stored 的文档。

【讨论】:

  • 仅适用于文件系统方法吗?如果我要做文件系统,我也使用 postgres....但是我很想连接到内存中的一个,因为它太快了(没有磁盘 i/o)。
  • 没关系,不知道 localhost:9000/@db 是一个你可以使用的 url,它确实有效!!!!只需点击连接按钮。当然,我有一个内部错误,因为我有 H2 控制台运行....由于某种原因不能这样做。
  • 我没有完全理解您写的内容...但请记住,使用jdbc:h2:tcp://localhost:9000/@db 时,它是相对于服务器的当前工作目录的。绝对目录是 jdbc:h2:tcp://localhost:9000//data/test(在 :9000 之后有两个斜杠)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多