说明:
以上错误遇到好多次了,出现在导入别人的sql语句的时候,由于mysql版本不一致,导致的错误,我的mysql版本是mysql5.5的,sql文件的版本是5.7以及以上的版本生成的
更多详细可以查看Mysql官方文档,自从5.7之后获取时间戳发生变化。
Mysql 5.7 官方文档
问题展示:
[Err] 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 '(0) DEFAULT NULL,
解决问题:
找到报错的语句,可用sublim小体量编辑器或者用文本文档,
CREATE TABLE `review` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '该用户默认给出了好评!!!' COMMENT '评论内容',
`cstid` int(11) DEFAULT NULL COMMENT '用户id',
`pid` int(11) DEFAULT NULL COMMENT '商品id',
`createtime` datetime(0) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `cstid`(`cstid`) USING BTREE,
INDEX `pid`(`pid`) USING BTREE,
CONSTRAINT `review_ibfk_1` FOREIGN KEY (`cstid`) REFERENCES `customer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `review_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `product` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
)
其中的:
`createtime` datetime(0) DEFAULT NULL,
注意这里的日期格式:
datetime(0);后面带零的为sql版本5.7以上版本才有的,
mysql5.5. 版本没有这个,因此要把这里的括号和零去掉
要把sql文件里所有带有这种格式的全部去掉才可以。
修改后语句:
CREATE TABLE `review` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '该用户默认给出了好评!!!' COMMENT '评论内容',
`cstid` int(11) DEFAULT NULL COMMENT '用户id',
`pid` int(11) DEFAULT NULL COMMENT '商品id',
`createtime` datetime DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `cstid`(`cstid`) USING BTREE,
INDEX `pid`(`pid`) USING BTREE,
CONSTRAINT `review_ibfk_1` FOREIGN KEY (`cstid`) REFERENCES `customer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `review_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `product` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
)
成功导入
恭喜你,问题解决: