首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTime值不正确:'DEFAULT‘在node.js中使用mysql

问DateTime值不正确:'DEFAULT‘在node.js中使用mysql
EN

Stack Overflow用户
提问于 2019-09-13 05:50:12
回答 1查看 373关注 0票数 1

使用MySQL5.7和Node12。

表模式如下所示

代码语言:javascript
复制
  name  varchar(255)   not null  primary key,
  createdAt  timestamp    default CURRENT_TIMESTAMP not null, 

现在如果我这么做了

代码语言:javascript
复制
mysql> insert into myTable (name, createdAt) values ('name1', 'DEFAULT');

它起作用了,但如果我这么做了

代码语言:javascript
复制
mysql> insert into myTable (name, createdAt) values ('name1', null); 

它将显示“不能为空”。

因此,如果需要,我尝试将该值设置为默认值,转到我的节点代码,

代码语言:javascript
复制
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错误

代码语言:javascript
复制
Error:  ER_TRUNCATED_WRONG_VALUE: Incorrect datetime value: 'DEFAULT' for column 'createdAt' at row 1 

请告诉我怎么解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-09-13 06:34:38

您已经定义了同时具有NOT NULL约束和DEFAULT约束的列。

由于NOT NULL约束,您不能将NULL值赋给该列,正如您注意到的:NULL仍然被认为是一个值。

如果您希望受益于DEFAULT约束,您可以不为列赋值,或者使用expresssion DEFAULT (作为一个字母,即未加引号,否则MySQL会将其视为一个字符串,正如您所期望的,它不能被分配给时间戳列):

代码语言:javascript
复制
insert into myTable (name) values ('name1');
insert into myTable (name, createdAt) values ('name1', DEFAULT);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57914925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档