grails h2数据库创建表

时间:2013-11-21 13:07:28

标签: database grails h2

我有一个非常简单的域类

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是空的并且没有表。为什么?我做错了什么?

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

我的项目我正在使用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"
    }

    }       


}

此配置工作正常

答案 2 :(得分:0)

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