mySQL-1067-“ updated_at”的默认值无效

时间:2018-09-25 02:16:45

标签: mysql xampp

尝试上传此.sql文件,但继续收到错误消息:

1067 - Invalid default value for 'updated_at'

我读过很多人遇到同样问题的帖子。遗憾的是,无法升级mySQL并使用timestamp

是否可以通过某种方式重新制作代码以使其与mySQL version: 5.5.16一起使用?

我对mySQL基本上一无所知,这只是需要上传的快速内容。

我在Windows上使用xampp

这是我的代码:

    -- Create syntax for TABLE 'api_news'
CREATE TABLE `api_news` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`news_title` text NOT NULL,
`news_content` text NOT NULL,
`news_image` text,
`room_id` int(11) DEFAULT NULL,
`group_id` int(11) DEFAULT NULL,
`news_hidden` enum('0','1') NOT NULL DEFAULT '0',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Create syntax for TABLE 'api_news_comments'
CREATE TABLE `api_news_comments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`article_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`message` text NOT NULL,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create syntax for TABLE 'api_profile_comments'
CREATE TABLE `api_profile_comments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`profile_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`message` text NOT NULL,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create syntax for TABLE 'api_room_comments'
CREATE TABLE `api_room_comments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`room_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`message` text NOT NULL,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create syntax for TABLE 'api_sessions'
CREATE TABLE `api_sessions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`session` varchar(100) NOT NULL DEFAULT '',
`expires` int(11) NOT NULL DEFAULT '0',
`data` text NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `user_session` (`session`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

1 个答案:

答案 0 :(得分:0)

您可以将该字段更改为时间戳,但是您必须自己处理代码中Eigen的更新。

更改:

Eigen::Tensor<int, 2> a(4, 3);
a.setValues({{0, 100, 200}, {300, 400, 500},
             {600, 700, 800}, {900, 1000, 1100}});
Eigen::array<int, 2> offsets = {1, 0};
Eigen::array<int, 2> extents = {2, 2};
Eigen::Tensor<int, 1> slice = a.slice(offsets, extents);
cout << "a" << endl << a << endl;
=>
a
   0   100   200
 300   400   500
 600   700   800
 900  1000  1100
cout << "slice" << endl << slice << endl;
=>
slice
 300   400
 600   700

收件人:

updated_at

其他人发布了您遇到的与MySQL版本有关的similar issue

如果您不介意使用更新前触发器解决方案作为替代解决方法,则该链接上的信息也具有要更新的触发器示例。