Вот ошибка: MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections".
Я не понимаю почему она выдается, потому что я где то все время вызываю эти методы? или не
С mySQL работаю в первый раз.
Я не понимаю почему она выдается, потому что я где то все время вызываю эти методы? или не
С mySQL работаю в первый раз.
Java:
public void addPlayer(Player player) throws SQLException {
Connection connection = getConnection();
Statement statement = (Statement) connection.createStatement();
statement.executeUpdate(String.format("INSERT INTO player_info (name, level, xp) VALUES ('%s', '%d', '%d')", player.getName(), PlayerLevels.getLevel(player), PlayerLevels.getExp(player)));
connection.close();
statement.close();
}
Java:
package com.vk.bestrax;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class SQLDatabase {
String url;
String user;
String password;
public SQLDatabase(neverAPI plugin) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
FileConfiguration config = plugin.getConfig();
String host = config.getString("mySQL.host");
int port = config.getInt("mySQL.port");
String user = config.getString("mySQL.user");
String dbname = config.getString("mySQL.dbname");
String password = config.getString("mySQL.password");
url = "jdbc:mysql://" + host + ":" + port + "/" + dbname;
this.user = user;
this.password = password;
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = getConnection();
} catch (Exception e) {
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
System.out.println("NeverAPI | SQLDatabase.java, Class.forName!");
}
Statement statement = (Statement) connection.createStatement();
statement.executeUpdate("CREATE TABLE IF NOT EXISTS player_info (name TEXT, level LONG, xp LONG)");
statement.close();
connection.close();
}
public Connection getConnection() throws SQLException {
if (user != null) {
return (Connection) DriverManager.getConnection(url, user, password);
}
return null;
}
public void saveLevel() throws SQLException {
Connection connection = getConnection();
Statement statement = (Statement) connection.createStatement();
HashMap<Player, Long> players = PlayerLevels.getPlayers();
for (Player player : Bukkit.getOnlinePlayers()) {
ResultSet RS = statement.executeQuery("SELECT COUNT(*) AS total FROM player_info where name ='" + player.getName() + "'");
try {
while (RS.next()) {
if( RS.getInt("total") > 0 ) {
PlayerLevels.addPlayer(player, RS.getLong("xp"));
statement.executeUpdate(String.format("UPDATE player_info set level=%d, xp=%d WHERE name='%s'", PlayerLevels.getLevel(player), PlayerLevels.getExp(player), player.getName()));
} else {
addPlayer(player);
PlayerLevels.addPlayer(player, 0);
}
}
} catch (SQLException e) {
statement.executeUpdate(String.format("UPDATE player_info set level=%d, xp=%d WHERE name='%s'", PlayerLevels.getLevel(player), PlayerLevels.getExp(player), player.getName()));
} finally {
RS.close();
connection.close();
statement.close();
}
}
}
public void addPlayer(Player player) throws SQLException {
Connection connection = getConnection();
Statement statement = (Statement) connection.createStatement();
statement.executeUpdate(String.format("INSERT INTO player_info (name, level, xp) VALUES ('%s', '%d', '%d')", player.getName(), PlayerLevels.getLevel(player), PlayerLevels.getExp(player)));
connection.close();
statement.close();
}
}
Код:
[14:27:39 INFO]: sleinexxx[/127.0.0.1:65382] logged in with entity id 0 at ([world]-248.22091713899914, 56.0, -1042.888604451264)
[14:27:42 WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
[14:27:42 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[14:27:42 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[14:27:42 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[14:27:42 WARN]: at java.lang.reflect.Constructor.newInstance(Unknown Source)
[14:27:42 WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[14:27:42 WARN]: at com.mysql.jdbc.Util.getInstance(Util.java:382)
[14:27:42 WARN]: at com.vk.bestrax.SQLDatabase.addPlayer(SQLDatabase.java:92)
[14:27:42 WARN]: at com.vk.bestrax.SQLDatabase.saveLevel(SQLDatabase.java:74)
[14:27:42 WARN]: at com.vk.bestrax.neverAPI.savePlayers(neverAPI.java:70)
[14:27:42 WARN]: at com.vk.bestrax.DataSaver.run(DataSaver.java:15)
[14:27:42 WARN]: at java.lang.Thread.run(Unknown Source)
>