【java BUG收集-持续更~】

JAVA BUG

该章收集工作中遇到的java bug,作为工作日志,方便回顾。

1、liquibase.lockservice锁异常

报错信息:Liquibase.exception.LockException:Could not acquire change log lock 或者 Could not acquire change log lock. Currently locked by DESKTOP-KQ19AGA (192.168.125.229) since 23-5-10 上午10:30
解决方案

(1)、启动参数增加jvm参数 -Dliquibase.lockservice=false

禁用 liquibase.lockservice 【但是笔者在application.yml 中写了
spring:
liquibase:
enabled: true
change-log: classpath:/db/changelog/db.changelog-master.yaml
contexts: dev,test
lockservice:
enabled: false
仍然无效,或者在pom.xml中添加以下配置来设置 JVM 参数

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <jvmArguments>
            -Dliquibase.lockservice=false
          </jvmArguments>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

也不行,不知道是不是我参数配置错误,,,】

(2)、修改或清空 包含有 DATABASECHANGELOGLOCK的表

网上搜到的方法是去数据库把 被锁的表清空或者改1为0
显示被哪台机器在什么时间被锁

select * from DATABASECHANGELOGLOCK;
update DATABASECHANGELOGLOCK set LOCKED=“”, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
但是sql developer中没有 DATABASECHANGELOGLOCK 表,因此使用navicat premium客户端看到有带后缀 _DATABASECHANGELOGLOCK的表,因此把所有带lock后缀的表都改1为0
在这里插入图片描述

select * from ACT_ADM_DATABASECHANGELOGLOCK
update ACT_ADM_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_APP_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_CMMN_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_CO_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_DE_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_DMN_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update ACT_FO_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
update FLW_EV_DATABASECHANGELOGLOCK set LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;

2、复杂sql语句转为LambdaQuery

spring cloud中,简单的sql语句:select * from t where id in(‘’,‘’) and name=''可以使用
this.query().andEq(MineGhcgZyml::getSzsbm, szs).andEq(MineGhcgZyml::getXzqbm, szq).andEq(MineGhcgZyml::getBznf, bznf).select();
this.ghfbService.query().andIn(MineGhcgGhfb::getZymlid, zymlid).select();
this指的是service层(controller\service\dto\entity);复杂的sql如下

select * from mine_ghcg_zyml where id in('d63b3a6c-e303-4319-89a3-02974117d116','b74548ed-74d6-4a9d-ae94-c48131d2688c','c7770f2d-7fdf-4c04-8a88-e8b3a6d369eb', '361818c2-a587-4148-8059-5bad68a94be0')
AND  (zymlbm ='2026' or zymlbm is null) 

必须使用query.and(query.condition()…)

//		资源目录表 删除szs\szq\bznf后,若除一级目录外没有其他bznf的记录则  删除一级目录
        	LambdaQuery<MineGhcgZyml> query = this.query();
        	query.and(query.condition().andIn(MineGhcgZyml::getId, zymlid))
        	.and(query.condition().andEq(MineGhcgZyml::getZymlbm, String.valueOf(bznf)).orIsNull(MineGhcgZyml::getZymlbm))
        	.delete();
            List<MineGhcgZyml> mineGhcgZymlList3 = this.query().andEq(MineGhcgZyml::getSzsbm, szs).andEq(MineGhcgZyml::getXzqbm, szq).andIsNotNull(MineGhcgZyml::getBznf).select();
            if (mineGhcgZymlList3.size() == 2) {
            	this.query().andIn(MineGhcgZyml::getId, zymlid).delete();
            }

3.java环境变量修改后不生效

修改java环境变量后,cmd查看java版本,还是之前的版本,需要做以下处理:
解决方案:

  1. 删除C:\Windows\System32目录下的相关的java.exe、javaw.exe、javaws.exe文件;

  2. 查看下系统变量path下有没有C:\ProgramData\Oracle\Java\javapath,有的话,一块删除。笔者本地 系统变量path下有C:\Program Files\Common Files\Oracle\Java\javapath,此Oracle\Java\javapath删除后,定义的java环境变量生效
    附: openjdk没有jre目录解决办法:

  3. cmd窗口中,进入openjdk目录

  4. 执行命令: bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值