今天是我实习的第十天,顺利(其实一点也不顺利)完成了上次描述的接口任务。在距离下班不到10分钟的时候突然脑抽一下子,想启动一下写的项目。
其实都已经测试没问题了,各个接口都是按预期输出,结果突然项目就启动失败了
我瞬间傻眼开始疯狂流汗:好特码吓人啊...
快速回想我都做了什么:
1.把自己的分支提交到了dev分支,准备下周一来上公司服务器测试;
2.把一些魔法值改成常量,然后把可能会变的常量写入MySQL;
3.把一个不适用MySQL5.7的方法留在了xml。这个实在没想起来
我去找大哥的时候其实已经6点了,大哥已经收拾准备下班了.....电脑都收拾好了,我当时很着急,因为这个bug不de我双休会记得这个过得很不舒服,让大哥帮我看看
离谱的是他一开始还不是报xml那个相关的错误
首先是我自己跑的时候,他告诉我找不到一个常量类:用一个表是用来存一些容易变动的常量,然后通过常量类的name去读对应的value。我把一些appid、key塞了进去,然后我看了一圈也没事...我就把我用的地方给退回魔法值,退回了居然还报这个错,我就clean了一下然后又改回使用MySQL+缓存这些常量的,居然就不报找不到这个bean了,进入下一阶段....
说下面这两个bean冲突了,但是他们俩其实都不在一个模块,大哥很疑惑,但他屈服了....把其中一个controller的name改成了controller1(大哥对不起,其实我也想早点下班)
com.ztesoft.bss.oc.prod.service.TestController com.ztesoft.bss.oc.prod.server.controller.TestController
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.ztesoft.bss.oc.prod.service.OcProdServiceApplication]; nested exception is
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'testController' for bean class
[com.ztesoft.bss.oc.prod.server.controller.TestController] conflicts with existing, non-compatible bean definition of same name and class [com.ztesoft.bss.oc.prod.service.TestController]
这里大哥还在纳闷,我之前都跑通了,只是把我的分支merge到另一个分支,这个分支就跑不通了.....我也纳闷,并且我当时完全不记得我之前有改什么不该改的内容。
改完了之后再重启,又报了新的错误,说是加载不了一个依赖,依赖是pom里带的...这时我仔细想了想,当时pom因为一些缩进问题一直在commit里挂着,我索性就把最开始的复制了一遍,然后什么也没点就关了。
这时大哥决定把所有模块都clean一下,然后重新编译一遍...当时电脑没插电,跑的很慢。大哥很急,我也很急。
再次运行的时候错误指向了我写的一个xml里的一段select,因为我们是5.7的MySQL,而这个里面用了row_number() over(),我在网上搜这个方法是MySQL8.0才支持的(指的是over())所以把他保留了下来,特意标注了一下这个是MySQL8.0才用的...我和大哥说的时候他告诉我,8.0不开源,我们不会升级到8.0的。
关于我为什么会用到这个方法,整体的思路是和隔壁组借鉴的,秉着能跑就不改的原则借鉴了他们的代码,我学了一个多小时学到了这个问题,然后把他变成了另一个脑铲问题:(
<!-- 这是原方法,但是有当前MySQL版本不支持的函数 -->
<select id="listNetMessageIncludeXiaoMiWhenMysql8.0" resultType="com.ztesoft.bss.oc.prod.client.dto.llm.ImMessageDto"> SELECT </select>
最后我和大哥都晚下班半小时,希望我们都能有一个愉快的双休
标签:硬控,...,弱智,oc,大哥,ztesoft,mybatis,prod,com From: https://www.cnblogs.com/kun1790051360/p/18377093