今天线上项目报错了 500 错误,Laravel 日志中显示
Illuminate/Database/QueryException with message 'SQLSTATE[42S22]:
Column not found: 1054 Unknown column 'is_charge' in 'field list'
(SQL: update `some_categories` set `lft` = case when `lft` >= 29 then `lft`+2 else `lft` end, `rgt` = case when `rgt` >= 29 then `rgt`+2 else `rgt` end where (`lft` >= 29 or `rgt` >= 29))'
即新增层级菜单的时候,更新历史节点的 left right 值报错。
但是,报错很诡异,SQL 语句中并没有 is_charge 出现,但是却一直报
Column not found: 1054 Unknown column 'is_charge' in 'field list'
这个错误很常见,以往都是因为线上数据表表没有同步新增字段,引起字段缺失。但是,完全不相关的 SQL 语句怎么会报出这个错误呢?
排除 Laravel 的问题
为了排除是 Laravel 的三方依赖问题,我直接在 MySQL 命令行中执行测试:
mysql> u