遇到大坑了!艹
前言
最近自己准备写个项目玩儿,并且准备采用docker来部署下,配合jenkins看下devops的效果;说干就干,尼玛采用了flyway插件,项目启动时建表语句却执行失败,老是报1064;找了些帖子都没解决,偶然发现这个坑点,记录于此;
建表脚本
DROP TABLE IF EXISTS `t_family_test`; CREATE TABLE `t_family_test` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `family_type` int(3) COMMENT '家庭成员类型', `family_type_name` varchar(10) COMMENT '家庭成员名称', `delete_flag` int(1) default '0' COMMENT '删除标识,0未删除 1已删除', `created_by` varchar(20) COMMENT '创建人', `created_time` datetime COMMENT '创建时间', `updated_by` varchar(20) COMMENT '更新人', `updated_time` datetime COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
尼玛这哪里有问题啊,狗日的。项目启动时,flyway执行这个脚本时就是报错;不信邪的我,拿着sql去数据库执行发现,还真是报错;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 ' int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', ' at line 3, Time: 0.000000s
看这意思是mysql版本的问题,吓的我赶紧去看了下我本地安装的mysql版本;
5.7的版本,应该是大家都在用的版本,肯定不会有问题的;那么出问题的点还是在这个脚本上;可是我左看右看尼玛这脚本究竟哪里有问题呢!
调整
就想着尝试调整下脚本sql间的间距,居然就ok了,特么的找谁说理去;
小结:mysql建表时,字段和表面都加上“`”号,且sql尽量聚合一点,不然错都不知道错哪里了!可怜的我找了一个多小时!坑爹啊,后面还是用表设计工具生成这类的建表的sql吧;