やりたいことをやってゆく

プログラミング関連に興味のあるエンジニアのブログ。日々学んだことをアウトプットしてゆきます。

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"