我目前正在尝试为 Bukkit 开发 Minecraft 插件。
这是我的数据库类的代码:
package net.klapsenjesus.protoncore;
import java.sql.Connection;
import java.sql.DriverManager;
import static org.bukkit.Bukkit.getLogger;
public class Database {
Connection connection;
public Database() {
}
public boolean connect (String host, String database, String user, String password) {
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connectionCommand = "jdbc:mysql://"+host+"/"+database+"?user="+user+"&password="+password+"&autoReconnect=true&failOverReadOnly=false&maxReconnects=10";
connection = DriverManager.getConnection(connectionCommand);
getLogger().info("Die Datenbankverbindung wurde erfolgreich hergestellt.");
return true;
}catch (Exception ex){
System.out.println(ex);
return false;
}
}
}
我通过以下方式从我的主类调用它:
String[] data = new String[4];
data[0] = getConfig().getString("host");
data[1] = getConfig().getString("database");
data[2] = getConfig().getString("user");
data[3] = getConfig().getString("password");
在我的 my.cnf 中,我将绑定地址设置为 0.0.0.0,防火墙没有阻止任何请求,MySQL 已启动并正在运行。我不知道错误在哪里。
这是一个例外:
<块引用>无法创建到数据库服务器的连接。尝试重新连接 10 次。放弃。 15:58:56 警告:在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 15:58:56 警告:在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 15:58:56 警告:在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 15:58:56 警告:在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 15:58:56 警告:在 com.mysql.jdbc.Util.handleNewInstance(Util.java:403) 15:58:56 警告: 在 com.mysql.jdbc.Util.getInstance(Util.java:386) 15:58:56 警告: 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) 15:58:56 警告:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) 15:58:56 警告:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) 15:58:56 警告:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) 15:58:56 警告:在 com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2095) 15:58:56 警告:在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2020) 15:58:56 警告:在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:768) 15:58:56 警告:在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) 15:58:56 警告:在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 15:58:56 警告:在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 15:58:56 警告:在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 15:58:56 警告:在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 15:58:56 警告:在 com.mysql.jdbc.Util.handleNewInstance(Util.java:403) 15:58:56 警告: 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385) 15:58:56 警告:在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323) 15:58:56 警告:在 java.sql.DriverManager.getConnection(DriverManager.java:664) 15:58:56 警告:在 java.sql.DriverManager.getConnection(DriverManager.java:270) 15:58:56 警告:在 net.klapsenjesus.protoncore.Database.connect(Database.java:20) 15:58:56 警告:在 net.klapsenjesus.protoncore.ProtonCore.onEnable(ProtonCore.java:34) 15:58:56 警告:在 org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) 15:58:56 警告:在 org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:351) 15:58:56 警告:在 org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) 15:58:56 警告:在 org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:494) 15:58:56 警告:在 org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:408) 15:58:56 警告:在 org.bukkit.craftbukkit.v1_16_R3.CraftServer.reload(CraftServer.java:881) 15:58:56 警告:在 org.bukkit.Bukkit.reload(Bukkit.java:651) 15:58:56 警告:在 org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) 15:58:56 警告:在 org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) 15:58:56 警告:在 org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:763) 15:58:56 警告:在 org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:748) 15:58:56 警告:在 net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:387) 15:58:56 警告:在 net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:356) 15:58:56 警告:在 net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1008) 15:58:56 警告:在 net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:847) 15:58:56 警告:在 net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) 15:58:56 警告:在 java.lang.Thread.run(Thread.java:748) 15:58:56 警告:由以下原因引起: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通信链路故障 15:58:56 警告:15:58:56 警告: 最后一个成功发送到服务器的数据包是 0 毫秒前。 驱动程序没有收到来自服务器的任何数据包。 15:58:56 警告:在 sun.reflect.GeneratedConstructorAccessor24.newInstance(来源不明) 15:58:56 警告:在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 15:58:56 警告:在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 15:58:56 警告:在 com.mysql.jdbc.Util.handleNewInstance(Util.java:403) 15:58:56 警告: 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) 15:58:56 警告:在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:335) 15:58:56 警告:在 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2187) 15:58:56 警告:在 com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2036) 15:58:56 警告:……还有 31 个 15:58:56 警告:由以下原因引起: java.net.UnknownHostException:null 15:58:56 警告:在 java.net.InetAddress.getAllByName0(InetAddress.java:1281) 15:58:56 警告:在 java.net.InetAddress.getAllByName(InetAddress.java:1193) 15:58:56 警告:在 java.net.InetAddress.getAllByName(InetAddress.java:1127) 15:58:56 警告:在 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:188) 15:58:56 警告:在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:299) 15:58:56 警告:……还有 33 个