首页 > 解决方案 > MySQL AUTO_INCREMENT 不起作用:ER_NO_DEFAULT_FOR_FIELD:字段 'id' 没有默认值

问题描述

CREATE TABLE User (
  id int NOT NULL AUTO_INCREMENT,
  username VARCHAR(20) NOT NULL,
  email VARCHAR(40) NOT NULL,
  image_file VARCHAR(40),
  password VARCHAR(40) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE Post (
  id int NOT NULL AUTO_INCREMENT,
  date_posted DATE NOT NULL,
  content VARCHAR(10000) NOT NULL,
  user_id INT,
  like_count INT NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE Post_comment (
  id int NOT NULL AUTO_INCREMENT,
  date_commented DATE NOT NULL,
  content VARCHAR(10000) NOT NULL,
  user_id INT,
  like_count INT NOT NULL,
  post_id INT,
  PRIMARY KEY (id)
);  

CREATE TABLE post_liked_by (
  user_id int NOT NULL,
  post_id int NOT NULL,
  PRIMARY KEY (user_id,post_id)
);

CREATE TABLE comment_liked_by (
  user_id int NOT NULL,
  comment_id int NOT NULL,
  PRIMARY KEY (user_id,comment_id)
);

ALTER TABLE User AUTO_INCREMENT=1;

ALTER TABLE Post
ADD FOREIGN KEY(user_id)
REFERENCES User(id)
ON DELETE SET NULL;

ALTER TABLE Post_comment
ADD FOREIGN KEY(user_id)
REFERENCES User(id)
ON DELETE SET NULL;

ALTER TABLE Post_comment
ADD FOREIGN KEY(post_id)
REFERENCES User(id)
ON DELETE SET NULL;

INSERT INTO User (username, email, password) VALUES ('egname', 'eg@eg.com', 'egpassword')

当我尝试插入用户表时,此代码给出错误ER_NO_DEFAULT_FOR_FIELD: Field 'id' doesn't have a default value,但我不确定为什么。我认为通过为 id 字段设置 AUTO_INCREMENT 的默认值为 1?我的代码编辑器的配置有问题吗?我正在使用 PopSQL 顺便说一句。

当我为 id 指定一个值时它工作正常,但我需要它在每次插入新数据时自动递增。

对于上下文,我正在尝试构建一个简单的项目,例如 facebook 的克隆。提前 Tqvm。

标签: mysqlsqlprimary-keyauto-increment

解决方案


推荐阅读