Hikari驱动程序不支持连接的获取/设置网络超时。 (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)

问题描述 投票:0回答:2

创建Hikari连接时出现错误,过去曾经使用mysql-connector,但最后我决定使用hikaricp。

这是错误:

[04:17:49] [Server thread/INFO]: HikariPool-1 - Starting...
[04:17:49] [Server thread/INFO]: HikariPool-1 - Driver does not support get/set network timeout for connections. (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)
[04:17:49] [Server thread/INFO]: HikariPool-1 - Start completed.

我的功能:

    private static final HikariConfig config;
    private HikariDataSource dataSource;

    static {
        config = new HikariConfig();
    }

    public void open(){ 
        config.setJdbcUrl("jdbc:mysql://localhost:3306/"+ database);
        config.setUsername(user);
        config.setPassword(password);
        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        dataSource = new HikariDataSource(config);
    }

我有这个pom.xml:

    <dependencies>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.divecrafts</groupId>
            <artifactId>spigot</artifactId>
            <version>1.8.8</version>
        </dependency>
    </dependencies>

我的专用服务器是使用mariadb的debian 9(最新版本)

java mysql mariadb hikaricp
2个回答
0
投票

在我看来,这是一个版本不匹配的问题。 setNetworkTimeout()是在JDBC 4.1中引入的,在JDBC 4.0中不存在。从您的stacktrace中,可以看到:

(com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()

这是导致问题的原因。因此,我建议将mysql驱动程序和所有相关依赖关系更新为最新版本,以解决您的连接问题。


0
投票

我已固定修改功能:

private Connection connection;

public void open(){
        if (checkConnection()) return connection;

        final HikariDataSource ds = new HikariDataSource();
        ds.setMaximumPoolSize(20);
        ds.setDriverClassName("org.mariadb.jdbc.Driver");
        ds.setJdbcUrl(String.format("jdbc:mariadb://%s:%s/%s", hostname, port, database));
        ds.addDataSourceProperty("user", user);
        ds.addDataSourceProperty("password", password);

        connection = ds.getConnection();
        return connection;
}

还有我的pom.xml

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.divecrafts</groupId>
            <artifactId>spigot</artifactId>
            <version>1.8.8</version>
        </dependency>
    </dependencies>

总而言之,由于我使用了mariadb,所以我添加了mariadb连接器。

© www.soinside.com 2019 - 2024. All rights reserved.