Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 列名未将时间戳作为默认值_Mysql_Sql_Mysql Error 1067 - Fatal编程技术网

Mysql 列名未将时间戳作为默认值

Mysql 列名未将时间戳作为默认值,mysql,sql,mysql-error-1067,Mysql,Sql,Mysql Error 1067,我在同一个表中创建了两列,更新了。这两列的数据类型均为datetime。现在,当我试图修改列数据类型时,如下所示- alter table nodestatics modify column updated_at datetime default current_timestamp; alter table nodestatics modify column created_at datetime default current_timestamp; 它显示以下错误 错误代码:1067“更

我在同一个表中创建了两列,更新了。这两列的数据类型均为datetime。现在,当我试图修改列数据类型时,如下所示-

alter table nodestatics modify column updated_at datetime default current_timestamp; 

alter table nodestatics modify column created_at datetime default current_timestamp;
它显示以下错误

错误代码:1067“更新时间”的默认值无效(0毫秒)

错误代码:1067“创建时间”的默认值无效(0毫秒)

我的mysql版本是5.5.41-0ubuntu0.14.04.1(Ubuntu)

在评论中很难参考:

从MySQL 5.6.5开始,
TIMESTAMP
DATETIME
列可以自动 初始化并更新到当前日期和时间(即 当前时间戳)。在5.6.5之前,这仅适用于
时间戳
,并且 每个表最多有一列
时间戳

要么升级到5.6.5。或者使用
TIMESTAMP
而不是
DATETIME

试试这个

alter table nodestatics modify column created_at timestamp default current_timestamp;

使用
时间戳
代替
日期时间


应该是这样的:

ALTER TABLE nodestatics MODIFY COLUMN updated\u at TIMESTAMP DEFAULT CURRENT\u TIMESTAMP

ALTER TABLE nodestatics修改在时间戳默认当前时间戳创建的列


或者您可以使用
触发器

CREATE TRIGGER myTable_OnInsert BEFORE INSERT ON `tblMyTable`
    FOR EACH ROW SET NEW.dateAdded = NOW();

你可以看看。快乐编码

还有一个问题。我们可以使用now()来克服这个问题吗?如果是,那怎么可能呢?@AnirudhRautela。不可以。您可以使用触发器来克服此问题。我们可以对特定表中的一列使用时间戳。在这种情况下,您可以使用
触发器
。检查我给定的链接如何使用它。