2

I'm trying to create a table in my newly created SQLite database. For some reason I'm getting an SQLException:

try {
        logger.debug("Trying to create table powerperms_permissions if not exists");
        statement.execute("CREATE TABLE IF NOT EXISTS powerperms_permissions ( "
                + "id INT NOT NULL AUTOINCREMENT,"
                + "uuid VARCHAR ( 64 ) NOT NULL,"
                + "permission VARCHAR ( 64 ) NOT NULL,"
                + "world VARCHAR ( 32 ) NULL,"
                + "PRIMARY KEY ( id ) );");
    } catch (SQLException e) {
        logger.error("Couldn't create permissions table",e);
    }

throws

[07:49:17 ERROR]: [PowerPerms] Couldn't create permissions table
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "AUTOINCREMENT": syntax error)
    at org.sqlite.DB.newSQLException(DB.java:383) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.sqlite.DB.newSQLException(DB.java:387) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.sqlite.DB.throwex(DB.java:374) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.sqlite.NativeDB.prepare(Native Method) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.sqlite.DB.prepare(DB.java:123) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.sqlite.Stmt.execute(Stmt.java:113) ~[spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at eu.taigacraft.powerperms.Main.registerSqlite(Main.java:240) [PowerPerms_v1.0.jar:?]
    at eu.taigacraft.powerperms.Main$2.run(Main.java:48) [PowerPerms_v1.0.jar:?]
    at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71) [spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) [spigot-1.10.jar:git-Spigot-6016ac7-10c10b3]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_72]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_72]

Why?

3 Answers 3

10

You can use the AUTOINCREMENT keyword only with INTEGER PRIMARY KEY, not INT NOT NULL.

Sign up to request clarification or add additional context in comments.

Comments

0

Ensure the primary key comes before the auto_increment then it will work

Comments

-2

There must be a database, auto increment is spelled like AUTO_INCREMENT and not null may affect your code depending on your dbms

1 Comment

this answer does not apply to SQLITE, it would e.g. apply to MySQL

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.