SQLITE_ERROR - SQL 错误或缺少数据库("AUTOINCREMENT" 附近:语法错误)
SQLITE_ERROR - SQL error or missing database (near "AUTOINCREMENT": syntax error)
我正在尝试在我新创建的 SQLite 数据库中创建一个 table。出于某种原因,我得到一个 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);
}
投掷
[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.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]
为什么?
您只能将 AUTOINCREMENT
keyword 与 INTEGER PRIMARY KEY
一起使用,而不是 INT NOT NULL
。
必须有一个数据库,自动增量拼写为 AUTO_INCREMENT 而不是 null 可能会影响您的代码,具体取决于您的 dbms
确保主键出现在 auto_increment 之前,然后它将起作用
我正在尝试在我新创建的 SQLite 数据库中创建一个 table。出于某种原因,我得到一个 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);
}
投掷
[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.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]
为什么?
您只能将 AUTOINCREMENT
keyword 与 INTEGER PRIMARY KEY
一起使用,而不是 INT NOT NULL
。
必须有一个数据库,自动增量拼写为 AUTO_INCREMENT 而不是 null 可能会影响您的代码,具体取决于您的 dbms
确保主键出现在 auto_increment 之前,然后它将起作用