laravel 9开发环境中无“数据库缓存”,需区分禁用配置缓存(运行php artisan config:clear清除bootstrap/cache/config.php)或查询缓存(如cache::remember),前者解决.env变量不生效致数据库连接失败,后者需cache::forget或cache:clear清除。

Laravel 9 开发环境中没有“数据库缓存”这个独立功能,你实际想关的,是 配置缓存 或 查询结果缓存 ——这两者常被误称为“数据库缓存”,但本质完全不同。
确认你真正要关的是什么
开发时常见的“缓存干扰”来源只有两个:
- config:cache:把 config/ 下所有配置编译成单个 PHP 文件(bootstrap/cache/config.php),导致 .env 变量无法动态读取 → 连接数据库失败(如 Access denied)
- 手动查询缓存:你自己写了 Cache::remember()、Cache::get() 等逻辑,把 Eloquent 查询结果存进了 Redis/文件 → 页面不更新数据
关闭配置缓存(最常见原因)
运行以下命令即可彻底清除并禁用它:
php artisan config:clear
该命令会删掉 bootstrap/cache/config.php。之后 Laravel 每次请求都重新加载 config/ 目录下的 PHP 文件,.env 值也能正常解析。开发中建议始终不执行 config:cache,只在部署到生产环境时才启用。
清除你写的查询缓存项
如果你在代码里用了类似这样的缓存:
$users = Cache::remember('all_users', 3600, fn() => User::all());
那 cache:clear 会清掉它,但更稳妥的做法是精准删除:
- 删单个键:
Cache::forget('all_users')或php artisan cache:forget all_users - 删整组(如果用了标签):
Cache::tags(['users'])->flush() - 清全部缓存(慎用):
php artisan cache:clear(会连 session、token 一起清)
检查是否启用了查询日志或模型监听器
Laravel 本身不会自动缓存 SQL 查询结果。但如果你开启了:
- Eloquent 的
remember()方法(已废弃,Laravel 9 不支持) - 第三方包(如 laravel-query-cache)
- MySQL 自身的 query_cache(已从 MySQL 8.0 移除,基本不用管)
那就需要按对应文档关闭,而不是 Laravel 原生命令。











