2016-09-06 10 views
3

タイムアウト:プールが空です。 10秒で接続を取得できません。使用できません[サイズ:7;ビジー:0;アイドル:0; lastwait:10000]Grails Gorm Timeout:プールが空です。接続を取得できません。

上記のエラーは、長い時間が経過してからアプリケーションが起動することになります。以下は

私のGORM DB構成です:

propertyShortSlave: 
    pooled: true 
    jmxExport: true 
    driverClassName: com.mysql.jdbc.Driver 
    url: url 
    username: uuuuuu 
    password: pppppp 
    dbCreate: validate 
    readOnly: true 
    dialect: org.hibernate.dialect.MySQL5InnoDBDialect 
    properties: 
      initialSize: 5 
      maxActive: 7 
      minIdle: 5 
      validationQuery: SELECT 1 
      maxIdle: 7 
      maxWait: 10000 
      maxAge: 600000 
      timeBetweenEvictionRunsMillis: 5000 
      minEvictableIdleTimeMillis: 60000 
      validationQueryTimeout: 3 
      validationInterval: 15000 
      testOnBorrow: true 
      testWhileIdle: true 
      testOnReturn: false 
      jdbcInterceptors: "ConnectionState;StatementCache(max=200)" 

私はそれを解決することができますか?

+0

は、あなたがURLに真の再接続=を試してみましたか? url = "jdbc:mysql:// localhost:3306/test?autoReconnect = true"あなたがURLを定義していないので、言うことは難しいです... – Vahid

+0

私はこれを試しましたが、validationQueryプロパティはありません。その場合、接続はすぐに終了します。しかし、私はautoReconnectとvalidationQueryを試しました。 –

+0

https://github.com/vahidhedayati/kchat/blob/master/grails-app/conf/kchatConfig.groovy#L13-L31この設定は本番環境では問題なしで実行していました。validationQuery = "接続を開いたままにするにはSELECT 1を設定する必要があります。 – Vahid

答えて

1

は、これらを使用してみてください:

dataSource { 
.... 
url = "jdbc:mysql://localhost:3306/databaseName?autoReconnect=true&useUnicode=true&CharSet=UTF-8&characterEncoding=UTF-8" 
.... 
properties { 
.... 
validationQuery = "SELECT 1" 
.... 
} 
} 
+0

JSON形式で投稿していますが、実際はYAML形式です。しかし、その考えは正しい。 – sphinks

+0

これは、Grailsが2.xバージョンで使用するGroovy Closureです。 Grails 3.xの後にYAMLが導入されました –

+0

正解ですが、質問の作成者のための注釈を作成するのは、初心者のために異なるフォーマットが混乱する可能性があるからです。 – sphinks

関連する問題