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

Laravel切换数据库后仍查询旧库的问题排查与解决方案咨询

问题求助:Laravel项目无法切换至新数据库

错误信息

Base table or view not found: 1146 Table 'montemar.users' doesn't exist

问题详情

montemar数据库存在,但其中的users表出现锁定错误(LOCKED TABLE),无法执行查询或导出操作。为此创建了新数据库montemar2,并修改了.env配置文件,但项目仍持续查询montemar数据库。

已尝试的无效操作

  • 重启Apache服务器(执行命令:$ systemctl apache restart)
  • 使用a2dissite禁用站点
  • 重启MySQL服务器
  • 清理Laravel缓存

需求

寻求可行方案让项目查询montemar2数据库,同时怀疑Apache缓存问题,希望能清理相关缓存。


可行解决方案

1. 彻底清理Laravel全类型缓存

Laravel的配置、路由等缓存可能未完全清除,执行以下完整清理命令:

php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
rm -rf bootstrap/cache/*

2. 校验环境配置文件

  • 确认.env文件中DB_DATABASE=montemar2配置正确,且无拼写错误
  • 检查项目根目录下是否存在.env.local、.env.production等环境专属配置文件,这类文件会覆盖主.env的数据库配置,若存在需同步修改其中的数据库名称

3. 修正Apache操作并清理其缓存

  • 重启Apache需使用正确命令(根据系统调整):
    # Debian/Ubuntu系统
    sudo systemctl restart apache2
    # CentOS/RHEL系统
    sudo systemctl restart httpd
    
  • 清理Apache磁盘缓存:
    sudo rm -rf /var/cache/apache2/mod_cache_disk/*
    

4. 检查数据库配置文件是否硬编码

打开config/database.php,确认数据库名称配置为动态读取环境变量:

'mysql' => [
    // ...其他配置
    'database' => env('DB_DATABASE', 'forge'),
    // ...其他配置
]

若此处直接写死montemar,需改为上述动态读取格式。

5. 清理PHP OPcache缓存

OPcache可能缓存了旧的配置信息,需重启PHP-FPM服务(根据PHP版本调整命令):

# 示例:PHP 8.1版本
sudo systemctl restart php8.1-fpm

若无法重启,可临时修改php.ini关闭OPcache,清理后再重新开启。

6. 校验站点配置

  • 确认a2dissite禁用旧站点后,已执行a2ensite启用正确的站点配置
  • 检查站点配置文件(通常在/etc/apache2/sites-available/下),确认文档根目录指向当前项目路径,避免加载旧项目的.env文件

内容的提问来源于stack exchange,提问作者Franklin'j Gil'z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:32:49