私は小さなグライル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とマッピング要素。
あなたはapplication.ymlファイルを表示する必要があります – quindimildev