play连接mysql数据库报错 -[error] c.z.h.p.HikariPool - HikariPool-1 - Exception during pool initialization.

[info] application - Creating Pool for datasource 'default'
[error] c.z.h.p.HikariPool - HikariPool-1 - Exception during pool initialization.
java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:102)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:81)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:55)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1027)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843)
        at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:440)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 73
        at com.mysql.cj.mysqla.io.Buffer.readInteger(Buffer.java:271)
        at com.mysql.cj.mysqla.io.MysqlaCapabilities.setInitialHandshakePacket(MysqlaCapabilities.java:62)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.readServerCapabilities(MysqlaProtocol.java:491)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.beforeHandshake(MysqlaProtocol.java:376)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.connect(MysqlaProtocol.java:1404)
        at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:218)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:975)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843)
        at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:440)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
[info] application - Creating Pool for datasource 'default'
[error] c.z.h.p.HikariPool - HikariPool-2 - Exception during pool initialization.
java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:102)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:81)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:55)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1027)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843)
        at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:440)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 73
        at com.mysql.cj.mysqla.io.Buffer.readInteger(Buffer.java:271)
        at com.mysql.cj.mysqla.io.MysqlaCapabilities.setInitialHandshakePacket(MysqlaCapabilities.java:62)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.readServerCapabilities(MysqlaProtocol.java:491)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.beforeHandshake(MysqlaProtocol.java:376)
        at com.mysql.cj.mysqla.io.MysqlaProtocol.connect(MysqlaProtocol.java:1404)
        at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:218)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:975)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:843)
        at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:440)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
[error] application -


! @76po34c2l - Internal server error, for (GET) [/] ->

错误报的比较诡异,既然提示数组越界,纠结了半天。突然想到我是新安装的mysql服务器。把ip地址修改成localhost发现可以正常连接。至此终于找到了问题,还是数据库配置的问题。

解决方案:

我的数据库服务安装在本地,首先本地连接上服务。将mysql数据库下的user表host字段的值改为“%”,之前默认为localhost。

play连接mysql数据库报错 -[error] c.z.h.p.HikariPool - HikariPool-1 - Exception during pool initialization._第1张图片

必须记住的1点是需要重启数据库服务。不然有可能不生效。

重新启动play,发现数据库正常连接,至此问题完美解决。



你可能感兴趣的:(mysql)