gpt4 book ai didi

mySQL - 1067 - 'updated_at' 的默认值无效

转载 作者:行者123 更新时间:2023-11-29 16:57:09 26 4
gpt4 key购买 nike

尝试上传此 .sql 文件,但不断收到错误:

1067 - Invalid default value for 'updated_at'

我读过很多帖子,人们都遇到了同样的问题。遗憾的是,升级 mySQL 和使用 timestamp 不是一个选择。

是否可以以某种方式重新编写代码以使其与mySQL版本: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;

最佳答案

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

更改:

`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

致:

`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

其他人发布了similar issue您所遇到的与 MySQL 版本相关的问题。

如果您不介意将更新前触发解决方案作为替代解决方案,该链接上的信息也有一个要更新的触发示例。

关于mySQL - 1067 - 'updated_at' 的默认值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com