Java SQL创建含自增主键的表报错,求正确语法
自增主键创建表报错的解决方案
你遇到的「字段ID和列ID未找到」错误,核心原因是不同数据库的自增主键语法不兼容,你的原语句只适用于特定数据库。以下是主流数据库的正确写法:
MySQL/MariaDB
你的原语法本身符合MySQL规范,若仍报错,检查拼写、数据库连接是否正确指向MySQL:
String createTable = "CREATE TABLE AUTOS (ID INTEGER PRIMARY KEY AUTO_INCREMENT, marke varchar(255), modell varchar(255), baujahr INT)";
SQLite
SQLite要求自增关键字为AUTOINCREMENT(无下划线),且必须搭配INTEGER PRIMARY KEY:
String createTable = "CREATE TABLE AUTOS (ID INTEGER PRIMARY KEY AUTOINCREMENT, marke varchar(255), modell varchar(255), baujahr INT)";
PostgreSQL
推荐使用SERIAL简化写法,或10+版本的标准IDENTITY语法:
SERIAL 写法
String createTable = "CREATE TABLE AUTOS (ID SERIAL PRIMARY KEY, marke varchar(255), modell varchar(255), baujahr INT)";
GENERATED AS IDENTITY 写法
String createTable = "CREATE TABLE AUTOS (ID INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY, marke varchar(255), modell varchar(255), baujahr INT)";
Oracle 12c+
Oracle 12c及以上支持IDENTITY语法,无需手动创建序列:
String createTable = "CREATE TABLE AUTOS (ID INTEGER PRIMARY KEY GENERATED AS IDENTITY, marke varchar2(255), modell varchar2(255), baujahr INT)";
额外排查点:确认JDBC驱动与目标数据库匹配,比如用SQLite却加载MySQL驱动,会导致语法解析错误。
内容的提问来源于stack exchange,提问作者Jxnnik
相关产品推荐
相关产品推荐

