2016-08-02 132 views
5

创建表的代码如下,同时我尝试导入新的数据库,该表正在以下错误虽然导入SQL表中获取错误,由于整理

查询

CREATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime(6) NOT NULL, 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime(6) NOT NULL, 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
) Engine=InnoDB AUTO_INCREMENT=14 ; 

error:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL, created_by int(20) NOT NULL,
updated_on datetime(6) NOT NU' at line 11

给出

请指导我解决这个问题,我仍然需要导入很多表格

+0

哪个版本你正在使用MySQL吗? – uruloke

+4

删除日期时间列定义的长度(6) –

+0

mysql版本5.5 –

回答

4

删除长度(6)从datetime(6)

所以您的查询会是这个样子,

CREATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime NOT NULL, 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime NOT NULL, 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
) Engine=InnoDB AUTO_INCREMENT=14 ; 
4

您不能指定datetim的长度属性Ë柱:

CREATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime NOT NULL, 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime NOT NULL, 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
) Engine=InnoDB AUTO_INCREMENT=14 ; 
4

不要设置长度datetime。只是把它作为

CREATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime NOT NULL,// remove length here 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime NOT NULL,// remove length here 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
)Engine=InnoDB AUTO_INCREMENT=14 
+0

int(20)是正确的吗? –

+0

是的,那是什么问题?或者更好的是BIGINT – Saty

2

我不知道为什么你使用长度6在你的日期时间字段。 删除长度,它会没事的。

0

当使用MySQL 5.5中添加一个长度为datetime时,导致一个错误,从而为这个工作,你会写

REATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime(6) NOT NULL, 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime(6) NOT NULL, 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
) Engine=InnoDB AUTO_INCREMENT=14 ; 

使用MySQL 5.6时,这但是会奏效。
它不会将长度添加到datetime,但MySQL 5.6将忽略长度并将其作为正常的datetime字段执行。

0

谢谢所有您的建议现在它为我

CREATE TABLE IF NOT EXISTS `blogs` (
    `blog_id` int(10) NOT NULL AUTO_INCREMENT, 
    `blog_title` text NOT NULL, 
    `blog_content` text NOT NULL, 
    `created_on` datetime NOT NULL, 
    `created_by` int(20) NOT NULL, 
    `updated_on` datetime NOT NULL, 
    `updated_by` int(20) NOT NULL, 
    PRIMARY KEY (`blog_id`) 
) Engine=InnoDB AUTO_INCREMENT=14 ; 

工作时,我们使用的日期时间在表中它会自动分配内存大小,所以我们并不需要指定它