使用MySQL5.7和Node12。
表模式如下所示
name varchar(255) not null primary key,
createdAt timestamp default CURRENT_TIMESTAMP not null, 现在如果我这么做了
mysql> insert into myTable (name, createdAt) values ('name1', 'DEFAULT');它起作用了,但如果我这么做了
mysql> insert into myTable (name, createdAt) values ('name1', null); 它将显示“不能为空”。
因此,如果需要,我尝试将该值设置为默认值,转到我的节点代码,
const addEntry (inputObj) => {
const sqlCmd = `insert into myTable (name, createdAt)
values ( ? ? )`;
const param = ['name1', inputObj.createdAt || 'DEFAULT'];
mysql.query(sqlCmd, param);
}测试时没有定义createdAt属性,inputObj ={ 'name':'name1‘};
it错误
Error: ER_TRUNCATED_WRONG_VALUE: Incorrect datetime value: 'DEFAULT' for column 'createdAt' at row 1 请告诉我怎么解决这个问题?
发布于 2019-09-13 06:34:38
您已经定义了同时具有NOT NULL约束和DEFAULT约束的列。
由于NOT NULL约束,您不能将NULL值赋给该列,正如您注意到的:NULL仍然被认为是一个值。
如果您希望受益于DEFAULT约束,您可以不为列赋值,或者使用expresssion DEFAULT (作为一个字母,即未加引号,否则MySQL会将其视为一个字符串,正如您所期望的,它不能被分配给时间戳列):
insert into myTable (name) values ('name1');
insert into myTable (name, createdAt) values ('name1', DEFAULT);https://stackoverflow.com/questions/57914925
复制相似问题