grails h2数据库创建表

Posted

技术标签:

【中文标题】grails h2数据库创建表【英文标题】:grails h2 database create table 【发布时间】:2013-11-21 13:07:27 【问题描述】:

我有一个非常简单的域类

class Person 

  String code


而且我也在使用默认的 DataSource 配置:

dataSource 
  pooled = true
  driverClassName = "org.h2.Driver"
  username = "sa"
  password = ""

hibernate 
  cache.use_second_level_cache = true
  cache.use_query_cache = false
  cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'

// environment specific settings
environments 
  development 
    dataSource 
      dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
      url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
      dialect = "org.hibernate.dialect.H2Dialect"
    
   ...

但是当我打开 /dbconsole 时,我看到 DB 是空的并且没有表。为什么?我做错了什么?

【问题讨论】:

【参考方案1】:

当您打开dbconsole 时,您必须确保它读取正确的数据库。

在您的 url 部分,将 dbconsole 指向您的应用正在使用的 url。在你的情况下:

jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000

【讨论】:

【参考方案2】:

我的项目我正在使用 mysql,我的数据源看起来像

dataSource 
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
    loggingSql = false
    properties 
        validationQuery="select 1"
        testWhileIdle=true
        timeBetweenEvictionRunsMillis=60000
    

hibernate 
    cache.use_second_level_cache = false
    cache.use_query_cache = false
    cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
    generate_statistics = false

// environment specific settings
environments 
    development 
    dataSource 
        dbCreate = "update" // one of 'create', 'create-drop','update'
        url="jdbc:mysql://localhost:3306/my_db"
        username="XXX"
        password="XXXXXX"
    

           



而且这个配置运行良好

【讨论】:

【参考方案3】:

如果您在开发模式下运行 Grails 并进行更改,我相信如果默认设置到位,它们将不会提交到 H2 数据库。您需要在生产模式下运行应用程序或更改一些配置属性才能在 DBConsole 中查看更新的信息。Similar *** Question

【讨论】:

以上是关于grails h2数据库创建表的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥 Grails 使用 H2 而不是 Oracle?

Grails 3.3 执行H2脚本命令

如何从 Grails 中正确删除 H2

如何像在 grails 中一样使我的 h2 数据库在 micronaut 中持久化?

具有弹簧安全性的 Grails 3.2.6。保存用户时未在内存中创建 h2 数据库