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

CodeIgniter 4出现Unknown column 'token' in 'field list'报错求解决

解决登出时Token黑名单插入报错的问题

1. 检查模型的批量赋值规则

如果使用Laravel这类框架,模型默认通过$fillable(允许批量赋值的字段)或$guarded(禁止批量赋值的字段)限制字段操作。若token未加入$fillable列表,框架会自动过滤该字段,导致SQL语句中缺失token列触发报错。需在UserModel中配置:

// 将token加入允许批量赋值的字段列表
protected $fillable = ['token', /* 其他允许的字段 */];
// 或者设置$guarded为空数组,允许所有字段赋值
protected $guarded = [];

2. 确认模型绑定的表是否正确

检查UserModel的$table属性,确保指向的是你的Token黑名单表,而非用户表或其他无关表:

// 替换为你的黑名单表名
protected $table = 'token_blacklist';

3. 排查数据库字段大小写问题

Linux环境下的MySQL默认区分表名/字段名大小写。核对数据库中字段名是token还是Token,代码中的字段名需与数据库完全一致,大小写不匹配会导致字段无法识别。

4. 检查插入语句的字段拼写

查看addBlacklist方法中的插入逻辑,确保字段名拼写正确:

// 错误示例:字段拼写错误
DB::table('token_blacklist')->insert(['tokn' => $token]);
// 正确示例
DB::table('token_blacklist')->insert(['token' => $token]);

若使用模型create方法,需保证传入数组的键名是token,与数据库字段严格匹配。

5. 清除框架缓存

部分框架会缓存表结构,若token字段是新增的,旧缓存可能导致字段识别失败。执行框架缓存清除命令,以Laravel为例:

php artisan config:clear
php artisan cache:clear

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:02:42