我在数据库中已经有一个带有字段的表“用户”
create Table user (
id INT(6) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username varchar(20) NOT NULL,
password varchar(20) NOT NULL,
profilename varchar(20) NOT NULL,
email varchar(40) NOT NULL,
socialemail varchar(40) NOT NULL)engine=InnoDB;
规定的列也包含值
我修改了表格并添加了更多列
ALTER TABLE user
ADD COLUMN enabled varchar(1),
ADD COLUMN accountnonexpired varchar(1),
ADD COLUMN credentialsnonexpired varchar(1),
ADD COLUMN accountnonlocked varchar(1);
现在,当我在 MYSQL 中使用以下命令将值插入新列时。
insert into user
(id,enabled,accountnonexpired,credentialsnonexpired,accountnonlocked) values ('1','Y','Y','Y','Y'),('2','Y','Y','Y','Y');
我遇到了一个错误
Error Code: 1364. Field 'username' doesn't have a default value
谁能告诉我为什么? 在新列中插入值的正确方法应该是什么?
最佳答案
INSERT
向您的表中添加新行,这些行必须具有非空用户名才能使 INSERT
成功 这不是 100% 清楚,但我认为您是说要为所有现有行设置这些新列的值。为此,您需要 UPDATE
而不是 INSERT
:
UPDATE user SET id='1', enabled = 'Y', accountnonexpired = 'Y' WHERE 1
为简洁起见,我省略了您的一些专栏,但您明白了。您可能还想更改表格,使这些值成为将来插入的新行的 DEFAULT
。
关于mysql - 插入现有表中新添加的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22853684/