You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行bundle exec rake snorby:setup报rake aborted! invalid hash错误

Snorby部署执行bundle exec rake snorby:setup报invalid hash错误排查

问题表现

在Ruby on Rails环境部署Snorby时,执行bundle exec rake snorby:setup命令后抛出rake aborted! invalid hash错误。
命令执行过程的输出依次为:

  • Jammit Warning: Asset compression disabled -- Java unavailable.
  • 提示snorby_config.yml配置文件未指定time_zone,自动检测到时区为Asia/Kolkata
  • 输出哈希字符串:750d6d911891ab576bdbc6b1c4dc5ecf73cb95fd145ab7b16194636094daa3b4ba42b01c05d991c8c174919162e00152a129c645b1e0508850042cf224f165af
  • mysql: [Warning] Using a password on the command line interface can be insecure.
  • ERROR 1007 (HY000) at line 1: Can't create database 'snorby'; database exists
  • [datamapper] Finished auto_upgrade! for :default repository 'snorby'
    错误指向任务链路:Tasks: TOP => db:seed,提示可添加--trace参数运行命令查看完整错误栈。

运行环境信息

  • Ruby版本:ruby 1.9.3p551 (2014-11-13 revision 48406) [x86_64-linux]
  • Bundler版本:Bundler version 1.9.3
  • 操作系统版本:Ubuntu 20.04 LTS (focal)

根因定位

该错误发生在种子数据写入阶段(db:seed),是密码哈希校验不匹配导致的,和前置的几个告警没有直接关系:

  • Jammit的Java不可用告警仅会关闭静态资源压缩,不影响初始化流程
  • 数据库已存在的1007错误是正常提示,说明库已提前创建,后续表结构自动升级流程可正常执行
  • Mysql命令行传密码的警告是客户端安全提示,不影响SQL执行
  • 核心问题是snorby_config.yml中未配置password_key加密盐值,加上Ruby 1.9.3与Snorby依赖的旧版bcrypt库存在兼容问题,生成的管理员密码哈希格式不符合校验规则,触发invalid hash报错。另外配置文件未显式指定时区,也可能在哈希生成时引入时间相关的计算偏差。

修复步骤

  1. 清理残留数据:登录Mysql执行以下命令,删除之前初始化失败残留的管理员账号数据
    DELETE FROM snorby.users WHERE user_name = 'snorby';
    
  2. 修改配置文件:打开项目根目录下config/snorby_config.yml
    • 找到time_zone配置项,显式设置为实际使用的时区,国内用户可设置为'Beijing'
    • 找到password_key配置项,填入一个长度不小于32位的随机字符串作为加密盐,不要留空
  3. 重置表结构:在项目根目录执行
    bundle exec rake db:automigrate
    
  4. 重新执行初始化命令
    bundle exec rake snorby:setup
    

初始化完成后,使用默认账号snorby@snorby.org、密码snorby即可登录后台。如果后续需要启用静态资源压缩,执行sudo apt install openjdk-8-jre-headless安装Java运行环境即可消除Jammit告警。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:42:20