由UTF8BOM文件格式引发的线上脚本执行失败

一、问题描述

MySQL数据库升级是采用脚本升级的方式,每次发布,是代码读取sql脚本,然后执行脚本,最后记录脚本名称,下次执行是查重。这次升级的时候反馈脚本执行失败,提示sql语法错误。

下面是脚本内容:

CREATE TABLE `ds_t_ai_model_service_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `code` varchar(255) DEFAULT NULL COMMENT '服务标识',
  `name` varchar(255) DEFAULT NULL COMMENT '服务名称',
  `parent_id` int(11) DEFAULT NULL COMMENT '父节点id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

反馈内容如下:

反馈内容

 大致如下:

Error executing: 
CREATE TABLE `ds_t_ai_model_service_type` (
`id` int(11) NOT NULL COMMENT '自增主键',
`code` varchar(255) DEFAULT NULL COMMENT '服务标识',
`name` varchar(255) DEFAULT NULL COMMENT '服务名称',
`parent_id` int(11) DEFAULT NULL COMMENT '父节点id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '
CREATE TABLE `ds_t_ai_model_service_type` (
`id` int(11) NOT NULL COMMENT ' at line 1

二、解决过程

  1. 排查脚本,没问题;
  2. 版本排查,现场是MySQL5.5,手动执行,没问题;
  3. 本地复现

断点报错显示 ZWNBSP的特殊字符,控制台是打印不出来的。搜了一下https://blog.youkuaiyun.com/weixin_39519741/article/details/114221401;UTF-8有一个BOM(Byte Order Mark)的问题;看了一下文件格式果然是UTF8BOM格式。可以通过文本编辑器改一下。

UTF8BOM格式的文件, idea右键文件,有个Remove BOM的菜单,也可以。

 再次执行就OK了。

 4. 最终执行脚本的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值