Java com.zaxxer.hikari.pool.PoolInitializationException:池初始化期间的异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/40166458/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 22:28:28  来源:igfitidea点击:

com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization

javamysqljdbchikaricp

提问by Accessory

I currently have one open pool that connects to my main database and it works perfectly. But now, I want to open a new pool for another database. I set up the new pool EXACTLY how I setup the first one, obviously I edited the database name, etc. No errors appear when I load my setupHikari() method but once an actual statement is about to run I get a lot of errors.

我目前有一个连接到我的主数据库的开放池,它运行良好。但是现在,我想为另一个数据库打开一个新池。我完全按照我设置第一个池的方式设置了新池,显然我编辑了数据库名称等。加载 setupHikari() 方法时没有出现错误,但是一旦要运行实际语句,我就会收到很多错误。

Caused by: com.zaxxer.hikari.pool.PoolInitializationException: Exception during pool initialization at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.java:580) ~[?:?] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:150) ~[?:?] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:96) ~[?:?] at com.thecodexmc.GameLibrary.xenforo.XenUtils.getUserGroupID(XenUtils.java:51) ~[?:?] at com.thecodexmc.GameLibrary.game.GameListeners.onLogin(GameListeners.java:334) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at org.bukkit.plugin.java.JavaPluginLoader.execute(JavaPluginLoader.java:306) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] ... 13 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_79] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_79] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.Util.getInstance(Util.java:382) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:931) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4031) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1296) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_79] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_79] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:440) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:138) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:108) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] at com.zaxxer.hikari.pool.HikariPool.addConnection(HikariPool.java:495) ~[?:?] at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.java:564) ~[?:?] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:150) ~[?:?] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:96) ~[?:?] at com.thecodexmc.GameLibrary.xenforo.XenUtils.getUserGroupID(XenUtils.java:51) ~[?:?] at com.thecodexmc.GameLibrary.game.GameListeners.onLogin(GameListeners.java:334) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at org.bukkit.plugin.java.JavaPluginLoader.execute(JavaPluginLoader.java:306) ~[server.jar:git-PaperSpigot-7aa4900-62a2169] ... 13 more

What am I doing wrong here? Here is my XenSQL class, which is what's causing the problem.

我在这里做错了什么?这是我的 XenSQL 类,这是导致问题的原因。

public class XenSQL {

private static XenSQL instance;
private HikariDataSource hikari;

public XenSQL() {
    instance = this;
}

public void setupHikari() {
    hikari = new HikariDataSource();
    hikari.setMaximumPoolSize(10);
    hikari.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
    hikari.addDataSourceProperty("serverName", host);
    hikari.addDataSourceProperty("port", port);
    hikari.addDataSourceProperty("databaseName", database);
    hikari.addDataSourceProperty("user", user);
    hikari.addDataSourceProperty("password", password);
    System.out.println("[XenSQL] HikariCP connected to the database successfully.");
}

public void queryUpdate(String query) {
    Connection connection = null;

    try {
        connection = hikari.getConnection();
        PreparedStatement pre = connection.prepareStatement(query);
        pre.executeUpdate();
        pre.close();
    } catch (SQLException e) {
        System.out.println("[XenSQL] Error whilst executing the query \"" + query + "\": " + e.getMessage());
    } finally {
        closeConnection(connection);
    }
}

public void closeConnection(Connection connection) {
    if(connection != null) {
        try {
            connection.close();
        } catch(SQLException e) {
            e.printStackTrace();
        }
    }
}

public HikariDataSource getHikari() {
    return hikari;
}

public static XenSQL getInstance() {
    return instance;
}
}

I removed the SQL information for obvious reasons, but I don't know what's the issue here.

我出于显而易见的原因删除了 SQL 信息,但我不知道这里有什么问题。

回答by Nitin

For MySQLNonTransientConnectionException: Too many connections

对于 MySQLNonTransientConnectionException:连接太多

some options you have are:

你有一些选择:

  1. Kill some connections manually
    Using SHOW PROCESSLIST to view all connections, then KILL the process ID's you want to kill.
  2. Edit timeout setting to have the MySQL daemon kill the inactive processes itself
    ie. in my.cnf:
    wait_timeout = 28800
    interactive_timeout = 28800
  3. Raise the connection count
    ie. in [mysqld] section of my.cnf:
    max_connections = 100
  4. Limit the amount of connections per username
    ie. in [mysqld] section of my.cnf:
    max_user_connections = 50
  5. Restart MySQL server
  1. 手动杀死一些连接
    使用 SHOW PROCESSLIST 查看所有连接,然后杀死要杀死的进程 ID。
  2. 编辑超时设置,让 MySQL 守护进程杀死非活动进程本身,
    即。在 my.cnf 中:
    wait_timeout = 28800
    Interactive_timeout = 28800
  3. 提高连接数,
    即。在 my.cnf 的 [mysqld] 部分:
    max_connections = 100
  4. 限制每个用户名的连接数量,
    即。在 my.cnf 的 [mysqld] 部分:
    max_user_connections = 50
  5. 重启 MySQL 服务器

HTH

HTH

回答by Abderrahmane

Go to the dependency of mysql in the pom.xml and remove the version tag.

去pom.xml中mysql的依赖,去掉version标签。

            <version>X.X.XX</version>

and relaunch your project

并重新启动您的项目

回答by Ganesh S

In application.properties look for Username and password ...whether it is same given while creating new oracle

在 application.properties 中查找用户名和密码 ... 创建新 oracle 时是否相同