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

Ubuntu 22.4下使用CONSTRAINT创建MySQL表遇MariaDB语法错误求助

问题解决:MySQL创建主键时的语法错误

你的SQL语句报错核心是主键约束的关键字不完整,原语句里写了PRIMARY但漏掉了KEY,这是MySQL/MariaDB语法不允许的。另外,列级别带CONSTRAINT定义主键的语法也需要严格符合规范。

错误原因拆解

原语句里的IdEmpleado INTEGER CONSTRAINT IndicePrimario PRIMARY存在语法问题:

  • 主键约束的完整关键字是PRIMARY KEY,仅写PRIMARY会被数据库判定为无效语法
  • 列级别使用CONSTRAINT指定约束名时,必须紧跟完整的约束类型关键字

正确的几种写法

写法1:列级别直接定义主键(最简方式)

CREATE TABLE Empleados (
    IdEmpleado INTEGER PRIMARY KEY,
    Nombre TEXT,
    Apellidos TEXT,
    FechaNacimiento DATETIME
);

写法2:列级别带自定义约束名的主键

如果需要给主键约束指定自定义名称(比如你想用的IndicePrimario),要写完整PRIMARY KEY:

CREATE TABLE Empleados (
    IdEmpleado INTEGER CONSTRAINT IndicePrimario PRIMARY KEY,
    Nombre TEXT,
    Apellidos TEXT,
    FechaNacimiento DATETIME
);

写法3:表级别定义主键(适合复合主键场景)

如果是多列组成的主键,或者习惯在表末尾统一管理约束,可以用表级别的CONSTRAINT:

CREATE TABLE Empleados (
    IdEmpleado INTEGER,
    Nombre TEXT,
    Apellidos TEXT,
    FechaNacimiento DATETIME,
    CONSTRAINT IndicePrimario PRIMARY KEY (IdEmpleado)
);

补充说明

你之前尝试修改字段类型为int、添加NOT NULL这些操作不影响这个语法错误,因为问题根源是主键约束的关键字不完整,和字段类型、非空属性无关。

内容的提问来源于stack exchange,提问作者luis_castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50