13

我正在尝试在我的 Play Framework 2.0 应用程序的 application.conf 文件中设置 autoReconnect=true mysql 连接属性。但它给了我以下错误:

Caused by: java.sql.SQLException: The connection property 'autoReconnect' only accepts values of the form: 'true', 'false', 'yes' or 'no'. The value 'true?useUnicode=yes' is not in this set.

这是我在 application.conf 文件中的连接字符串:

db.default.url="mysql://db_user:db_user@localhost/mydb?autoReconnect=true"

我正在尝试设置此连接参数,因为在我的应用程序空闲很长时间后我在我的应用程序中收到此错误:

[error] c.j.b.ConnectionHandle - Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01
[error] application - Failed to login the user : guest
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully  
received from the server was 153,398,761 milliseconds ago.  
The last packet sent successfully to the server was 153,398,762 milliseconds ago. is longer than the server configured value of 'wait_timeout'. 
You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

我还尝试设置这些 play db 参数来解决这里提到的连接问题(https://groups.google.com/forum/#!topic/play-framework/KzvbZ61j9Eo),但它没有解决问题。

idleConnectionTestPeriod=10
testConnectionOnCheckin=true

任何解决此问题的指导将不胜感激。

谢谢。

4

2 回答 2

16

显然有些东西在你的 URI 上附加了 '?useUnicode=yes',所以你最终得到

mysql://db_user:db_user@localhost/mydb?autoReconnect=true&useUnicode=yes

解析这会给你 autoReconnect 的值是true?useUnicode=yes

深入挖掘一下,也许您的连接池或数据抽象层正在这样做。

于 2014-01-09T22:58:26.927 回答
7

您有 2 个连接参数,将它们与 & 而不是 ? :

mysql://db_user:db_user@localhost/mydb?autoReconnect=true&useUnicode=yes
于 2015-07-08T02:01:12.480 回答