You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:15:00