mysql - 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。
解决方案
推荐阅读
- r - R将箱形图与条形图结合起来有效,但反之则不行
- c# - 以 zip 格式下载多个文件
- python - 使用索引的数组内的numpy ndarray
- java - 基本身份验证请求应该是 POST 还是 GET?
- python - 创建具有特定预定义元素排序的一维 numpy 数组
- go - 是否所有 Go 函数都返回 err 作为第二个返回值?
- sql - 必须为 spark 中的标量子查询聚合相关标量变量
- java - HHH000342:无法获取到查询元数据的连接:null
- sphinx - 在 Sphinx 搜索中,按排名和字段排序如何相互关联?
- c++ - 使用 g++-8 编译时找不到 boost/asio/io_context.hpp