2016-09-28 3 views
0

私は小さなグライル3.0.11アプリケーションを持っています。我々は、アプリケーション間で共有されるドメインモジュールを持っています。 アプリケーション(app1、app2、etc)の1つが起動すると、データソースに接続し、ドメインモジュールのすべてのクラスのテーブルを作成します。スイート内のすべてのアプリケーションは、これらのテーブルを作成しようとします。代替データソースを指定した後、grailsは埋め込みh2のSQL例外をスローしています

内部h2 dbではなくMSSQLインスタンスを使用するようにapplication.ymlを変更し、dbCreateを更新して、スキーマがアプリケーションのシャットダウンを通じて持続するように設定しました。

ドメインを分割して、各アプリケーションが関連するクラスのスキーマのみを管理するようにしようとしています。つまり、app1は起動時にclassA、classB、classCのddlを処理し、app2はclassX、classY、classZを処理します。 thisガイドに続いて、各アプリ(app1db、app2dbなど)に固有の2番目のデータソースを定義し、関連するアプリを指定する各クラスにmapping = { datasource 'appXdb'}を追加しました。ます。java.sql.SQLException:によって引き起こさ

:私はアプリを起動したときに

今、私はSQL例外を取得していますドライバーます。jdbc::H2のjTDS 1.3.1は URLにnullを返されました: MEM:grailsDB; MVCC = TRUE; LOCK_TIMEOUT = 10000

なぜ私のアプリはまだMSSQLインスタンスを指すようにデータソースを再定義してもMSSQLを指す第二のデータソースを追加した後のH2 DBにアクセスしようとしていますか?

application.yml:

--- 
server: 
    port: 3434 
    contextPath: '/app1' 
--- 
grails: 
    profile: web 
    codegen: 
     defaultPackage: cars.app 
info: 
    app: 
     name: '@[email protected]' 
     version: '@[email protected]' 
     grailsVersion: '@[email protected]' 
spring: 
    groovy: 
     template: 
      check-template-location: false 

--- 
grails: 
    mime: 
     disable: 
      accept: 
       header: 
        userAgents: 
         - Gecko 
         - WebKit 
         - Presto 
         - Trident 
     types: 
      all: '*/*' 
      atom: application/atom+xml 
      css: text/css 
      csv: text/csv 
      form: application/x-www-form-urlencoded 
      html: 
       - text/html 
       - application/xhtml+xml 
      js: text/javascript 
      json: 
       - application/json 
       - text/json 
      multipartForm: multipart/form-data 
      pdf: application/pdf 
      rss: application/rss+xml 
      text: text/plain 
      hal: 
       - application/hal+json 
       - application/hal+xml 
      xml: 
       - text/xml 
       - application/xml 
    urlmapping: 
     cache: 
      maxsize: 1000 
    controllers: 
     defaultScope: singleton 
    converters: 
     encoding: UTF-8 
    views: 
     default: 
      codec: html 
     gsp: 
      encoding: UTF-8 
      htmlcodec: xml 
      codecs: 
       expression: html 
       scriptlets: html 
       taglib: none 
       staticparts: none 
--- 
hibernate: 
    cache: 
     queries: false 
     use_second_level_cache: true 
     use_query_cache: false 
     region.factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory' 

endpoints: 
    jmx: 
     unique-names: true 
    shutdown: 
     enabled: true 
dataSources: 
    dataSource: 
     pooled: true 
     jmxExport: true 
     driverClassName: net.sourceforge.jtds.jdbc.Driver 
     username: grails 
     password: password 
    app1DataSource: 
     pooled: true 
     jmxExport: true 
     driverClassName: net.sourceforge.jtds.jdbc.Driver 
     username: grails 
     password: password 

environments: 
    development: 
     dataSource: 
      dbCreate: update 
      url: jdbc:jtds:sqlserver://127.0.0.1;databaseName=cars_demo 
     appDataSource: 
      dbCreate: update 
      url: jdbc:jtds:sqlserver://1127.0.0.1;databaseName=cars_demo 

     dataSource: 
      dbCreate: update 
      url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1 
    production: 
     dataSource: 
      dbCreate: update 
      url: jdbc:h2:mem:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1 
      properties: 
       jmxEnabled: true 
       initialSize: 5 
       maxActive: 50 
       minIdle: 5 
       maxIdle: 25 
       maxWait: 10000 
       maxAge: 600000 
       timeBetweenEvictionRunsMillis: 5000 
       minEvictableIdleTimeMillis: 60000 
       validationQuery: SELECT 1 
       validationQueryTimeout: 3 
       validationInterval: 15000 
       testOnBorrow: true 
       testWhileIdle: true 
       testOnReturn: false 
       jdbcInterceptors: ConnectionState 
       defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED 

マッピングエレメント:static mapping = {datasource 'app1DataSource'}

EDIT1:添加application.ymlとマッピング要素。

+0

あなたはapplication.ymlファイルを表示する必要があります – quindimildev

答えて

0

が判明しました。私は適切にapplication.ymlの環境上の上書きをネストしていませんでした。私は親要素dataSourcesを追加しました:メインセクションの実際のdsの定義については、環境セクションで同じことをしませんでした。つまり、私のdsがURLをw/oでロードしていたことを意味し、それがデフォルトのgrails h2 dbになりました。

ありがとう@quindimildev!私はあなたの提案に従うために書式を見つけようとしている間、私の見落としを認めました。

関連する問題