我正在尝试导入我的旧数据库,但这给了我一些错误,这使得我无法在谷歌上搜索30分钟,我找不到任何解决方案?
charCodeAt()
答案 0 :(得分:2)
正确的默认值为CURRENT_TIMESTAMP
:
CREATE TABLE `UG_blogs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catid` int(11) NOT NULL,
`ownerid` int(11) NOT NULL,
`content` text NOT NULL,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY id(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
SQL小提琴是here。
编辑:
你必须使用旧版本的MySQL(好吧,不是那么老,只是在5.6之前)。好吧,您不能默认datetime
值(没有触发器),因此您必须使用TIMESTAMP
值并学会喜欢时间戳功能:
CREATE TABLE `UG_blogs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catid` int(11) NOT NULL,
`ownerid` int(11) NOT NULL,
`content` text NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY id(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
答案 1 :(得分:0)
第一个解决方案:将数据类型更改为时间戳,如下所示
CREATE TABLE `UG_blogs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catid` int(11) NOT NULL,
`ownerid` int(11) NOT NULL,
`content` text NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY id(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
问题是:Timestamp数据类型的范围是1970-01-01 00:00:01 UTC到2038-01-19 03:14:07。
所以第二个解决方案是,不要将datetime数据类型更改为时间戳。但是你需要一个触发器来设置默认值。