2015-09-26 84 views
0

我想导入我的旧数据库,但这给了我一些错误什么使它不可能即时通讯也搜索谷歌30分钟,我找不到任何解决方案?MySQL查询错误#1064?

SQL-query: 


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 TIMESTAMP, 
    PRIMARY KEY (`id`), KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 


MySQL meldt: Documentatie 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 
    PRIMARY KEY (`id`), KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT C' at line 6 

回答

1

正确的默认值是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; 
+0

这给了我以下错误:#1067 - 对“日期” –

+0

我使用无效的默认值:44年5月5日,MariaDB的 但生病给它一个镜头 –

+0

@MennovanHout。 。 。 MariaDB * *(基本上)是MySQL,所以5.6或更高版本应该支持'datetime'和默认值。 –

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; 

问题是:时间戳数据类型的范围为1970-01-01 00:00:01 UTC至2038-01-19 03:14:07。

所以第二个解决方案是,不要将datetime数据类型更改为timestamp。但是你需要一个触发器来设置默认值。