MySQL查询错误#1064?

时间:2015-09-26 22:52:27

标签: mysql

我正在尝试导入我的旧数据库,但这给了我一些错误,这使得我无法在谷歌上搜索30分钟,我找不到任何解决方案?

charCodeAt()

2 个答案:

答案 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数据类型更改为时间戳。但是你需要一个触发器来设置默认值。