记一次代码编写规范引发的惨案 | perl脚本转前端平台代码之‘天坑’
前言
在一次修改后台脚本的途中,几经挫折,一顿缝缝补补,以为百无一疏之时,信心满满的提交到前端运行上线。结果喜闻乐见,呵呵,又双叒叕报错了…经过
报错代码类似如下:
#错误日志:
2020-07-28 16:32:00 [pool-1-thread-2] [ERROR] Error while compiling statement: FAILED: ParseException line 2:100 cannot recognize input near '<EOF>' '<EOF>' '<EOF>'
2020-07-28 16:32:00 [pool-1-thread-1] [ERROR] 结果获取异常
--变量赋值区
V_MONTH='${taskid?substring(0,6)}';
V_DAY='${taskid}';
V_FDAY='${taskid?substring(0,6)}01';
V_LASTDAY='${taskid?calDate(0,'m','yyyyMMdd')?calDate(0,'L')}';
V_LAST1MONTH='${taskid?calDate(-1,'M')?substring(0,6)}';
V_LAST2MONTH='${taskid?calDate(-2,'M')?substring(0,6)}';
V_LAST3MONTH='${taskid?calDate(-3,'M')?substring(0,6)}';
V1_LASTDAY='${taskid?calDate(-1,'m','yyyyMMdd')?calDate(0,'L')}';
V_LAST_MONTH1DAY='${taskid?calDate(-1,'m')?substring(0,6)}01';
老泪纵横的查看报错日志,定位到对应的sql语句:
--SETP xx
-- update ref.TR_MRKT_TYP_SZ set MRKT_TYP_CD=1 , MRKT_TYP_NAM='xxx' where mrkt_chnl_cd='SZ_BBSZ0790H';
INSERT OVERWRITE TABLE table1
SELECT a_CHNL_CD,CASE WHEN a_CHNL_CD='**********' THEN '1' ELSE a_TYP_CD END a_TYP_CD,CASE WHEN a_CHNL_CD='**********' THEN 'xxx' ELSE a_TYP_NAM END a_TYP_NAM,a_BRANCH_CD,b_BRANCH_CD,c_CHNL_NAM
FROM table2
;
看着这熟悉的注释符号,我凝视许久,突然我意识到了些什么!
没错!问题出在这句注释上的sql语句!为啥,咱们来分析一下,因为这句sql语句在前人优化代码的时候,属于后台脚本,所以他理所当然地直接注释掉了,ok没毛病,然而现如今,后台代码要转到前端,注释里面的;
命令结束符本该出现在sql的结尾,却错误的出现在了INSERT OVERWRITE TABLE
的前面,导致报错cannot recognize input near '<EOF>' '<EOF>' '<EOF>'
,无法识别错误字符!!!
- 结尾
在重新执行删表、建表、代码变更、程序上线一系列操作之后,终于在下午饭点前成功实现前端平台上的运行跑数了,一个小小的;
就这么倒腾了大半天的时间,啊这啊这啊这…T^T
收拾完案发现场后,我冷静的坐在电脑桌前,决定把这次血的教训记在小本本上,以史为鉴,让自己少些秃头,多些发量,ending…
记一次代码编写规范引发的惨案 | perl脚本转前端平台代码之‘天坑’相关推荐
- J2EE项目代码编写规范分享
码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯. 代码编写规范使用范围:J2EE项目开发. 包命名规范: 目的:包的命名规范应当体现出项目资源良好的划分 servle ...
- .NET代码编写规范 整理
.NET代码编写规范 - [ASP.NET] 2009-02-26 | Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://lenspe.blogbus.com/ ...
- 程序详细设计之代码编写规范_我在不编写任何代码的情况下建立了一个设计策划网站
程序详细设计之代码编写规范 It's been just over a month since MakeStuffUp.Info - my first solo project as an indep ...
- C语言 程序代码编写规范
前言 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性. 说明 l 本文档主要适用于刚刚开始接 ...
- c语言程序前言,C语言 程序代码编写规范前言
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...
- 微课|中学生可以这样学Python(1.3节):Python代码编写规范
适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第1章 Python概述 1.3 Python代码编写规范 京东购买链接:https://it ...
- c语言程序报告的前言,C语言 程序代码编写规范前言
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性 ...
- 长沙北大青鸟java 学费_长沙北大青鸟学校好不好 长沙北大青鸟实力学费一览表:Java代码编写规范(二)...
原标题:长沙北大青鸟学校好不好 长沙北大青鸟实力学费一览表:Java代码编写规范(二) 文件名规范 1.一个Java源文件只能存储个Java类. 2.文件名与Java类名相同. 3.一个类文件的代码行 ...
- 软件开发php代码规范,php开发规范_PHP代码编写规范
摘要 腾兴网为您分享:PHP代码编写规范,篆刻字典,优酷,学习计时,小t智联等软件知识,以及我爱写真网,哔哩哔哩唧唧app,碟中碟虚拟光驱,鬼泣31.3,西伯利亚t18,兄弟7450打印机驱动,活动a ...
最新文章
- insert时调用本身字段_「技术篇」ETL工具Kettle数据对比同步以及Java程序中调用
- LiveVideoStackCon 2021上海站 售票通道关闭倒计时24h
- ORACLE 数据库安装后,PL/SQL的登录问题完美解决
- linux C++ 多进程初步02
- Boost.Python实现Python C/C++混合编程
- 生产Docker应用重启排查经历
- 今天我的MSN提示升级了
- c#使用pdf控件,提示无效注册类
- 超简单!一部手机就能提取视频中的语音转换成文字
- ubuntu18.04自带的输入法数字键选择出现数字而不是中文
- 大脑衰老可逆转,只需注入年轻脑脊液,“返老还童”登Nature
- Redis命令INCRBY和INCR区别
- 将一个word文档按一页或多页拆分成多个文档
- Java 中continue基础用法
- OSChina 周二乱弹 ——现在我满眼都是小星星
- Java 中 HttpURLConnection 与 PoLA 法则
- 核磁T1加权像和T2加权像的区别
- ZOJ1217 Numerically Speaking (进制转换,大整数除法,字符串处理,较难而且坑)
- LVS三种工作方式八种算法
- centos8报错:Errors during downloading metadata for repository ‘base‘