奇怪的Laravel 5缓存使用错误的数据库名称

12

我有两个 Laravel API,在本地开发机上为 AngularJS 应用提供服务。当 Angular 页面调用这两个 API 进行 POST 请求时,我遇到了一个奇怪的问题:它似乎使用了错误的数据库名称(它正在使用另一个 Laravel 实例的数据库)。Laravel 抛出一个异常,说找不到 表 database.table,其中 database 是错误的数据库名称。我已经尝试使用 Postman 调用了每个 API,一切都正常工作,并且我确定在任何项目中都没有提到其他数据库。

对我来说,这似乎是一个缓存问题,可能是 .env 文件在两个 Laravel 服务器之间被缓存和共享的原因。这两个 Laravel 应用都托管在 Apache 上。我尝试调用 php artisan config:clear,并设置了适当的头文件在 .htaccess 文件中,以尝试防止任何缓存,但这两者都没有起作用。我还尝试了多个浏览器,清除了缓存,但仍然出现相同的错误。

我希望能够使用 .env 文件,以便在开发服务器上拥有唯一的配置,所以我不想在 config/database.php 中硬编码数据库凭据。有什么想法可能是问题的原因吗?

两个 database.php 文件看起来像:

'mysql' => [
'driver'    => 'mysql',
'host'      => env('DB_HOST'),
'database'  => env('DB_DATABASE'),
'username'  => env('DB_USERNAME'),
'password'  => env('DB_PASSWORD'),
'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix'    => '',
'strict'    => false, 
],

存储唯一设置的位置在.env中。


我还没有解决这个问题,但是作为一个临时的解决方法,我现在根据env('APP_ENV')的值,在app/config/database.php中定义数据库凭据,而不是将它们存储在.env文件中。 - Gabriel
停止服务器并重新运行(php artisan serve) - Mert Metin
我也遇到了同样的问题。我找到了解决方法:运行 php artisan optimize 命令,该命令将清除配置、路由和文件缓存,并创建新的缓存。每次编辑路由或 .env 文件后都需要运行此命令。 - Hemant Prajapat
11个回答

0

如果你想使用.env.production,你可以通过添加--env=production强制命令返回此错误时使用env文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接