Frage von Lexus1997, 40

Ich habe Probleme damit ein MySQL Table zu erstellen, komme aber nicht drauf warum. Kann mir jemand helfen?

Das ist mein Code:

    public static void enable()
    {
        connect();
        try
        {
            System.out.println("Table wird versucht zu erstellen");
            PreparedStatement ps = getConnection().prepareStatement("CREATE TABLE IF NOT EXISTS PlayerData(UUID VARCHAR(100), Spielername VARCHAR(100), SelectedLanguage VARCHAR(10), Money DECIMAL(65)");
            ps.executeUpdate();
            System.out.println("Table wurde erfolgreich erstellt");
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

    public static void connect()
    {
        try
        {
            con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
            System.out.println("[MySQL] Verbindung aufgebaut!"); //TODO
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

und das meine Fehlermeldung:

[12:05:56 INFO]: [MySQL] Verbindung aufgebaut!
[12:05:56 INFO]: Table wird versucht zu erstellen
[12:05:56 WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
[12:05:56 WARN]:    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[12:05:56 WARN]:    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[12:05:56 WARN]:    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[12:05:56 WARN]:    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
[12:05:56 WARN]:    at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
[12:05:56 WARN]:    at com.mysql.jdbc.Util.getInstance(Util.java:382)
[12:05:56 WARN]:    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
[12:05:56 WARN]:    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
[12:05:56 WARN]:    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
[12:05:56 WARN]:    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
[12:05:56 WARN]:    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
[12:05:56 WARN]:    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)
[12:05:56 WARN]:    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)
[12:05:56 WARN]:    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2407)
[12:05:56 WARN]:    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2325)
[12:05:56 WARN]:    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2310)
[12:05:56 WARN]:    at MyPackage.MainThings.MySQL.MySQL.enable(MySQL.java:27)
[12:05:56 WARN]:    at MyPackage.MainThings.MotherClass.onEnable(MotherClass.java:34)
[12:05:56 WARN]:    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
[12:05:56 WARN]:    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340)
[12:05:56 WARN]:    at org.bukkit.plugin.SimplePluginManager.enabl
Antwort
von EightSix, 40

Nach Decimal(100) geht die Klammer nur einmal zu. Hinter Playerdata fehlt ein Leerzeichen.

Kommentar von Lexus1997 ,

Danke das war der Fehler :) Ich hab schon geahnt, dass mit das zum Verhängniss wird, dass das ganze ein String ist.

Kommentar von Sawascwoolf ,

Am besten hilft man sich dann durch copy&paste in phpmyadmin oder ähnlichen Tools das SQL Statement zu debuggen, dort kannst du dann bspw. die einzelnen Abschnitte in neue Zeilen packen und deine Fehlermeldung wird aufschlussreicher.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten