mariadb 当我还有主键时,外键出现SQL语法错误

6ioyuze2  于 2023-03-23  发布在  其他
关注(0)|答案(2)|浏览(133)

1064 -SQL语法中有错误;检查与您的MariaDB服务器版本对应的手册,以在第8行的“REFERENCES users(id))”附近使用正确的语法

当我尝试执行SQL语句时,我得到了上面的错误。

CREATE TABLE projects(
    projectId INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    description VARCHAR(250),
    others INT NOT NULL,
    notes TEXT,
    userId INT NOT NULL,
    CONSTRAINT fk_userId FOREIGN KEY userId REFERENCES users(id)
);

我相信这个问题可能与主键有关,因为下面是我编写的一个有效SQL语句,它也有一个外键,但没有主键

CREATE TABLE about(
    pfp longblob,
    bio VARCHAR(250) NOT NULL DEFAULT " ",
    friends INT NOT NULL DEFAULT 0,
    followers INT NOT NULL DEFAULT 0,
    id INT NOT NULL,
    CONSTRAINT fk_id FOREIGN KEY id REFERENCES users(id)
);
7gyucuyw

7gyucuyw1#

你应该使用括号。这里有一个链接。

CONSTRAINT fk_userId FOREIGN KEY (userId) REFERENCES users (id)
mec1mxoz

mec1mxoz2#

Mariadb强制每个auto_increment也必须是主键或唯一约束
正如您在第二个查询中看到的。

CREATE tABLe users (id BIGINT NOt NULL auto_increment primary key)
CREATE TABLE projects(
    projectId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    description VARCHAR(250),
    others INT NOT NULL,
    notes TEXT,
    userId BIGINT NOT NULL,
    CONSTRAINT fk_userId FOREIGN KEY (userId) REFERENCES users(id)

);
CREATE TABLE about(
    pfp longblob,
    bio VARCHAR(250) NOT NULL DEFAULT " ",
    friends INT NOT NULL DEFAULT 0,
    followers INT NOT NULL DEFAULT 0,
    id BIGINT NOT NULL,
    CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES users(id)
);

fiddle

相关问题