You need to enable JavaScript to run this app. RocksDB打开含.sst文件的/vdt/derived目录报不存在错误(create_if_missing为false)如何解决
优惠活动
大模型
产品
解决方案
定价
更多

RocksDB打开含.sst文件的/vdt/derived目录报不存在错误(create_if_missing为false)如何解决

问题根因分析

抛出的异常核心信息是 org.rocksdb.RocksDBException: /vdt/derived: does not exist (create_if_missing is false),这个报错和目录下是否存在.sst文件没有直接关系。RocksDB在校验阶段首先会检查要打开的数据库根目录本身的有效性,只要系统层面判定这个路径不可访问、不存在,就会直接抛出这个错,哪怕目录下已经存放了完整的sst文件也不会跳过校验。
常见触发场景包括:

  • 运行应用的账号没有/vdt/derived目录的访问权限,系统会将无权限路径直接判定为“不存在”
  • 代码里传入的dbPath路径和实际存放sst的/vdt/derived路径不一致(比如多了一层不存在的子目录、路径字符串带多余空格)
  • /vdt/derived是失效的软链接,指向的实际存储路径已经被删除
  • 目录创建时的属主是其他用户,当前运行应用的普通账号无法进入这个目录
排查解决步骤
  1. 校验目录的实际可访问性
    不要用root账号直接确认目录是否存在,要切换到运行Java应用的同一账号,执行以下命令确认能正常访问、看到目录下的sst文件:
    sudo -u 应用运行账号 ls -ld /vdt/derived
    sudo -u 应用运行账号 ls /vdt/derived
    
    如果返回权限错误,就调整目录权限:
    chown -R 应用运行账号:应用账号组 /vdt/derived
    
  2. 确认代码传入的路径准确性
    在调用RocksDB.open方法之前,将实际传入的dbPath打印到日志,逐字符对比和服务器上真实存放sst的路径,排除路径拼接错误、多余空格、软链接失效的问题。
  3. 临时验证配置有效性
    可以临时将create_if_missing配置设为true做连通性测试:如果配置为true后RocksDB能在当前路径正常打开,说明之前的路径校验环节确实识别不到原目录的有效性;如果还是报错,根据新抛出的异常再定位权限或路径损坏的问题。

内容的提问来源于stack exchange,提问作者amitwdh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 01:54:05