我正在学习旋转,我的第一次尝试是访问现有的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
有什么建议吗?
答案 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才能正确启动它。现在它正在运行......