/ 文档备忘 / 1浏览

Docker Snipe-IT 升级后网站登陆 500 错误

docker 镜像 snipe-it v7.0.10 更新至 v7.0.11 后,网站登陆后报错:500 错误,查看 docker logs snipe-it 无任何报错信息

解决步骤

  1. 开启 snipe-it 的 debug 模式:
    # docker conpose 文件中 env_file 指定的文件修改如下参数,并重启容器:
    APP_DEBUG=true
    
  2. 登录 snipe-it,页面显示具体错误信息如下:
    Illuminate\Database\QueryException
    PHP 8.2.20
    10.48.14
    SQLSTATE[42S02]: Base table or view not found: 1146 Table 'snipeit.accessories_checkout' doesn't exist
    select
      `accessories`.*,
      (
        select
          count(*)
        from
          `accessories_checkout`
        where
          `accessories`.`id` = `accessories_checkout`.`accessory_id`
      ) as `checkouts_count`
    from
      `accessories`
    where
      `min_amt` is not null
      and `accessories`.`deleted_at` is null
    

    依据提示 SQLSTATE[42S02]: Base table or view not found: 1146 Table 'snipeit.accessories_checkout' doesn't exist 应该是没有找到某个表,通常是因为版本升级后数据库迁移未成功或某些表未正确创建。

  3. 进入 snipe-it 容器,并运行以下命令来检查数迁移状态:
    php artisan migrate:status
    

    有很多 Penging 的表 add 还没有进行:

  4. 运行以下命令执行迁移:

    php artisan migrate
    

    键入 yes 以便允许进行迁移

  5. 关闭 snipe-it 的 debug 模式,并重启容器,重新登录系统,问题解决!