Play2.3 で MySQL5.6 に接続した時にKilling off this connection and all remaining connections in the connection pool. SQL State = HY000 となる件への対処
下記のようなエラーが表示された時の対処です。
※イマイチ原因がわからず悩んだのでノウハウとして、ググったところいろんな原因があるようでした
環境はタイトルの通り。
[error] c.j.b.ConnectionHandle - Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = HY000 [error] c.a.e.s.c.BeanRequest - Error trying to rollack a transaction (after a prior exception thrown) javax.persistence.PersistenceException: java.sql.SQLException: Connection is closed! at com.avaje.ebeaninternal.server.transaction.JdbcTransaction.rollback(JdbcTransaction.java:640) ~[avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.transaction.JdbcTransaction.rollback(JdbcTransaction.java:625) ~[avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.core.BeanRequest.rollbackTransIfRequired(BeanRequest.java:95) ~[avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.persist.DefaultPersister.saveRecurse(DefaultPersister.java:280) [avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.persist.DefaultPersister.save(DefaultPersister.java:244) [avaje-ebeanorm-3.3.4.jar:na] Caused by: java.sql.SQLException: Connection is closed! at com.jolbox.bonecp.ConnectionHandle.checkClosed(ConnectionHandle.java:459) ~[bonecp-0.8.0.RELEASE.jar:na] at com.jolbox.bonecp.ConnectionHandle.rollback(ConnectionHandle.java:1270) ~[bonecp-0.8.0.RELEASE.jar:na] at com.avaje.ebeaninternal.server.transaction.JdbcTransaction.rollback(JdbcTransaction.java:637) ~[avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.transaction.JdbcTransaction.rollback(JdbcTransaction.java:625) ~[avaje-ebeanorm-3.3.4.jar:na] at com.avaje.ebeaninternal.server.core.BeanRequest.rollbackTransIfRequired(BeanRequest.java:95) ~[avaje-ebeanorm-3.3.4.jar:na]
対処としてはMySQLの文字コードをUTF-8へ変更しました。
mysql> show variables like '%char%' -> ; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
※my.cnf変更した後はテーブルも再作成が必要です。
(当たり前ですが焦っててはまったのでメモ)
Application.conf
# MySQL db.default.driver=com.mysql.jdbc.Driver db.default.url="jdbc:mysql://localhost:3306/hoge" db.default.user=hoge db.default.password="hoge"
build.sbt
"mysql" % "mysql-connector-java" % "5.1.18"