Grails继续访问H2而不是Postgres

时间:2014-09-07 18:32:13

标签: postgresql grails

我正在学习旋转,我的第一次尝试是访问现有的Postgres数据库。为此,我创建了一个模型,一个脚手架控制器并修改了DataSource.groovy

dataSource {
    pooled = true
    jmxExport = true
    driverClassName = "org.postgresql.Driver"
    username = "postgres"
    password = "postgres"
    dialect = org.hibernate.dialect.PostgreSQLDialect
}

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
    singleSession = true // configure OSIV singleSession mode
    flush.mode = 'manual' // OSIV session flush mode outside of transactional context
}

// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "validate" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:postgresql://localhost:5432/dh2"
        }
    }
}
然而,Grails不断尝试连接到H2。

    Line | Method
->>  344 | getJdbcSQLException       in org.h2.message.DbException
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|    178 | get                       in     ''
|    154 | get . . . . . . . . . . . in     ''
|   5213 | readTableOrView           in org.h2.command.Parser
|   1220 | readTableFilter . . . . . in     ''
|   1859 | parseSelectSimpleFromPart in     ''
|   1968 | parseSelectSimple . . . . in     ''
|   1853 | parseSelectSub            in     ''
|   1674 | parseSelectUnion . . . .  in     ''
|   1662 | parseSelect               in     ''
|    434 | parsePrepared . . . . . . in     ''
|    306 | parse                     in     ''
|    278 | parse . . . . . . . . . . in     ''
|    243 | prepareCommand            in     ''
|    442 | prepareLocal . . . . . .  in org.h2.engine.Session
|    384 | prepareCommand            in     ''
|   1188 | prepareCommand . . . . .  in org.h2.jdbc.JdbcConnection
|     73 | <init>                    in org.h2.jdbc.JdbcPreparedStatement
|    276 | prepareStatement . . . .  in org.h2.jdbc.JdbcConnection
|     15 | $tt__index                in nl.softworks.dh2grails.UserController
|    189 | doFilter . . . . . . . .  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter                  in grails.plugin.cache.web.filter.AbstractFilter
|   1110 | runWorker . . . . . . . . in java.util.concurrent.ThreadPoolExecutor
|    603 | run                       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . . . . . . . . . in java.lang.Thread

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我不认为db命名与它有任何关系,但可能会尝试将它从testDb更改为devDb。我自己是Grails的新手,我不确定它是否以这种方式连接起因为命名的原因。这是一个适合我的副本,我使用H2进行开发,一旦完成开发,将迁移到Postgres或MySQL:

development {
    dataSource {
        dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
        url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
    }
}

我很好奇,如果testDb改为devDb会有所作为。

答案 1 :(得分:0)

我完全处于原因的黑暗中,但我创建了一个新的grails qotd应用程序(正如我在本书中所描述的那样)并且运行(对抗H2)。然后我从第一次尝试中复制了模型和控制器,并且也运行了(对H2)。然后我复制了DataSource.groovy并重新启动;然后Grails开始访问Postgres,我必须配置所有类型的id才能正确启动它。现在它正在运行......