【问题标题】:Minecraft plugin: Mysql new version errorMinecraft插件:Mysql新版本错误
【发布时间】:2020-06-21 12:21:45
【问题描述】:

我最近开始开发minecraft插件,但即使我一直使用1.8版本的游戏开发,连接mysql的方法也发生了变化。我更新了插件中的依赖项,但它一直给我错误...有人可以帮助我吗?

这就是错误。

> [21:18:50 INFO]: [ELicense] Enabling ELicense v1.0
> [21:18:50 INFO]: Can't connect to database
> [21:18:50 WARN]: java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
> [21:18:50 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
> [21:18:50 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
> [21:18:50 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
> [21:18:50 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1794)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3523)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2386)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
> [21:18:50 WARN]: at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
> [21:18:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> [21:18:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> [21:18:50 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> [21:18:50 WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> [21:18:50 WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
> [21:18:50 WARN]: at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
> [21:18:50 WARN]: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
> [21:18:50 WARN]: at java.sql.DriverManager.getConnection(DriverManager.java:664)
> [21:18:50 WARN]: at java.sql.DriverManager.getConnection(DriverManager.java:270)
> [21:18:50 WARN]: at it.license.EatingSouls.DataManager.checkLicense(DataManager.java:26)
> [21:18:50 WARN]: at it.license.EatingSouls.Main.onEnable(Main.java:16)
> [21:18:50 WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
> [21:18:50 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340)
> [21:18:50 WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405)
> [21:18:50 WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357)
> [21:18:50 WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317)
> [21:18:50 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414)
> [21:18:50 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378)
> [21:18:50 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333)
> [21:18:50 WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263)
> [21:18:50 WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525)
> [21:18:50 WARN]: at java.lang.Thread.run(Thread.java:748)

或者如果我更改登录系统,它会给我这个:

> [12:09:29 INFO]: [ELicense] Enabling ELicense v1.0
> [12:09:29 INFO]: Can't connect to database
> [12:09:29 WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client.

知道我该如何解决。

这是代码

public static void checkLicense(String license) {
        String l = license.replaceAll("'", "");
        if(l != null && !l.equalsIgnoreCase("")) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection(link);
                String sql = "SELECT * FROM License WHERE license='"+ l +"' AND is_active='1'";
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                if(!rs.next()) {
                    System.out.println("The license you entered is invalid or has been deactivated. Please enter a valid license!");
                    Bukkit.getPluginManager().disablePlugin(Main.me);
                } else {
                    System.out.println("You are using a valid license!");
                }
                  con.close();
            }catch(Exception e) {
                System.out.println("Can't connect to database");
                e.printStackTrace();
                Bukkit.shutdown();
            }
        } else {
            System.out.println("Please insert a valid license!");
            Bukkit.getPluginManager().disablePlugin(Main.me);
        }

【问题讨论】:

  • MySQL 是一个完全独立于 Minecraft 的数据库应用程序;您使用插件与之交互。你需要更新你正在使用的 MySQL 数据库,甚至不需要接触 Minecraft 服务器。

标签: java mysql minecraft


【解决方案1】:

确保您的服务器/数据库上有最新的 MySQL 版本和最新的依赖项。

第 1 步:确保拥有最新版本(依赖项和服务器)

第 2 步:使用 SQL 查询检查当前版本:SELECT version();

【讨论】:

  • 我的世界服务器是1.8.8...我认为服务器使用的是旧版本的spigot mysql
  • 这与我的世界服务器版本无关 - 它与 MySQL 版本有关。因此,您必须将两者都更新到最新版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
相关资源
最近更新 更多