соединение с playframework закрыто при использовании как slick, так и anorm

У меня в проекте используется и слик, и анорм.

I define a method for slick 

  object DBCache {
    def apply(app: play.api.Application) = Cache.getOrElse[Database](app.hashCode.toString){
      Database.forDataSource(PlayDB.getDataSource("default")(app))
    }
  }

  private[persist] def inSession[T](block: Session => T) = DBCache(current).withSession(block(_))

И когда я могу использовать метод пакетной вставки, используйте anorm

def batchInsert(customerAccounts: Seq[Customer]) = DB.withConnection { implicit conn =>
      val sql = SQL(insertSql)
      val batch = customerAccounts.foldLeft(sql.asBatch) {
        (sql, c) => sql.addbatch(xxx)
      }
}

Он сообщает

play.api.Application$$anon$1: Исключение выполнения [[MySQLNonTransientConnectionException: После закрытия соединения операции не разрешены.]

Как избежать этой ошибки


person jilen    schedule 02.01.2014    source источник
comment
У вас так каждый раз или время от времени?   -  person Somatik    schedule 03.01.2014
comment
@Somatik периодически, не каждый раз   -  person jilen    schedule 03.01.2014
comment
множество проблем в системе отслеживания ошибокbonecp, связанных с этими bugs.launchpad.net/bonecp/+bug /1243551 bugs.launchpad.net/bonecp/+bug/1258339 можно попробовать другой плагин пула соединений (c3p0)   -  person Somatik    schedule 03.01.2014
comment
есть запрос на вытягивание github.com/wwadge/bonecp/pull/20   -  person Somatik    schedule 03.01.2014


Ответы (1)


Я обнаружил, что основная ветка playframework отключила отслеживание, datasource.setDisableConnectionTracking( conf.getBoolean("disableConnectionTracking").getOrElse(true))

Поэтому я отключаю его в Global.scala.

Есть еще некоторые проблемы. Когда происходит ошибка sql, соединение может быть закрыто. Затем я обратился к источнику данных Alibaba https://github.com/alibaba/druid. Он отлично работает!

person jilen    schedule 14.01.2014
comment
Я обратился к druid источнику данных, используемому в Alibaba. Он отлично работает! - person jilen; 14.03.2014