无法查看 grails 项目中使用的 h2 db

Posted

技术标签:

【中文标题】无法查看 grails 项目中使用的 h2 db【英文标题】:trouble viewing h2 db used in grails project 【发布时间】:2011-09-22 01:05:21 【问题描述】:

我正在尝试查看 Grails 项目中使用的 h2 db 中生成的表,但有些不对劲。

我通过http://127.0.1.1:8082/ 连接到浏览器控制台,但可供浏览的只有INFORMATION_SCHEMA 和用户。如何获取应用程序使用/生成的表?

刚开始构建应用程序,只有几个域类到位,我正在尝试感受如何使用 h2。在此之前,我一直在所有项目中使用 PostgreSql,所以目前这非常令人不安。 提前致谢

【问题讨论】:

【参考方案1】:

您在登录时是否使用了正确的 JDBC URL?

grails 中的默认值为jdbc:h2:mem:devDB

当给定一个不存在的 URL(如 jdbc:h2:blabla)时,将创建一个空数据库,并使用您所描述的默认 INFORMATION_SCHEMAUsers

确保连接到 grails 应用程序存储其表的 URL。您可以在 $GRAILS_PROJECT/config/DataSource.groovy 中找到 URL,位于 url 定义之后。

environments 
  development 
    dataSource 
      pooled = false
      logSql = false
      username = "sa"
      password = ""

      dialect = "com.hp.opr.hibernate.dialect.H2Dialect"
      driverClassName = "org.h2.Driver"
      dbCreate = "create-drop"
      url = "jdbc:h2:mem:devDB;DB_CLOSE_DELAY=-1;MVCC=TRUE"
    
  

【讨论】:

...你确定方言字符串没有错字吗? 已编辑。我在我的项目中使用了 H2Dialect 的修改版本,但无论如何在这里都没关系。 ...感谢您为我指出正确的方向:-)。【参考方案2】:

如果您使用的是 2.0,则 Web 控制台默认在开发模式下启用,并且可以在其他环境中启用:http://grails.org/doc/2.0.0.M2/guide/conf.html#databaseConsole

如果您还没有使用 2.0,您可以安装 http://grails.org/plugin/dbconsole 插件或点击我的博客文章的链接,如果您想自定义 url(或者如果您使用的是 1.3 之前的 Grails .6,因为插件对 1.3.6+ 有人为的版本限制)

【讨论】:

是的,我使用的是 2.0。所以我再次可以正常连接,但我没有看到应用程序创建的表。 h2 插件是否在 Config.groovy 中正确设置? (见问题编辑) 这些都不适用于 2.0 中的 H2 支持 - 它只是注册 Web servlet,以便您可以在浏览器中访问它。唯一的自定义选项是它是否已启用以及 url 是什么。【参考方案3】:

... 所以在数据源中我将 url 更改为: url = "jdbc:h2:rswDb" (删除 'mem' 部分并更改数据库的名称)。然后在项目的根目录中出现了 3 个 db 文件。

接下来,在 db 控制台中将 jdbc url 设置为:jdbc url: jdbc:h2:~/work/web/rsw/rswDb

...当我点击“连接”时,所有表格都在那里!

再次感谢!

【讨论】:

以上是关于无法查看 grails 项目中使用的 h2 db的主要内容,如果未能解决你的问题,请参考以下文章

尝试在使用Grails作为框架时在H2数据库中查看表

如何在 Grails 3 Gradle 项目中控制 H2 驱动程序版本?

如何从 Grails 中正确删除 H2

Grails 3.3 执行H2脚本命令

Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind

为啥 Grails 使用 H2 而不是 Oracle?