YashanDB |执行 SQL 报 YAS-02024 锁等待超时?可能是默认设置的问题
在 YashanDB 中执行某些 DDL 或 DML 语句时,如果涉及到锁竞争,就可能遇到如下报错:
YAS-02024 lock wait timeout, wait time 0 milliseconds
这种情况看似突然,其实和数据库默认的锁等待设置有关。本文将带你快速定位原因,并提供实用的规避方法。
一、问题描述
执行如下 SQL 时报错:
复制代码
控制台提示:
复制代码
语句因未能获取锁而直接失败。
二、根本原因分析
YashanDB 默认的锁等待超时时间为 0 秒,即如果当前 SQL 执行时请求的资源已被其他会话占用:
数据库不会等待;
而是立即返回锁等待超时错误。
三、适用范围

四、解决办法
方法一:临时或永久修改锁等待超时时间
复制代码
修改后将自动同步更新到配置文件 config/yasdb.ini,实现持久化。
方法二:找出阻塞源并终止会话
1、查询当前锁定信息:
复制代码
2、关联查找会话信息:
复制代码
3、手动终止阻塞会话:
复制代码
4、批量终止锁表会话(适用于大量阻塞情况):
复制代码
将输出的 SQL 批量复制执行即可。
五、预防建议

六、总结
锁等待超时并非系统 bug,而是默认策略的结果。在开发环境或测试环境中,合理配置 DDL_LOCK_TIMEOUT 和清理无效会话,是避免 YAS-02024 报错最直接的方式。对生产环境,建议引入锁等待监控机制,及时发现并处理长时间占锁行为。
评论