2014-09-07 2 views
1

Я беру grails для вращения, и моя первая попытка - получить доступ к существующей базе данных Postgres. Для этого я создал модель, контроллер люльки и модифицировал DataSource.groovyGrails продолжает обращаться к H2 вместо Postgres

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

Усложняющий поворот; Я изменил DataSource использовать H2 и начать создавать таблицы: развитие {dataSourceH2 { dbCreate = "создать" URL = "JDBC: h2: MEM: TestDB; MVCC = TRUE; LOCK_TIMEOUT = 10000; DB_CLOSE_ON_EXIT = FALSE" } , но он не создает таблицу: Таблица «пользователь» не найден – tbeernot

ответ

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 сделает разница.

+0

Пробовал, но, конечно, это не имело значения. Я бы ушел, если бы это было причиной. – tbeernot

+1

он генерирует файл db с именем как devDb –

0

Я полностью в темноте по причине, но я создал новое приложение grail qotd (как описано в моей книге), и это побежало (против H2). Затем я скопировал модели и контроллеры с первой попытки, и это тоже побежало (против H2). Затем я скопировал DataSource.groovy и перезапустил; Затем Grails начал получать доступ к Postgres, и мне пришлось настраивать все типы файлов id, чтобы правильно их исправить. Теперь он работает ...