laravel / lumen REST API 间歇性地 ingores env 并使用 'forge' 数据库

laravel / lumen REST API intermittently ingores env and uses 'forge' database

似乎有一个相关的问题here

我有一个 js 前端与 lumen REST 对话 API。

我的前端最终可能每秒向同一个端点发出大量请求。

假设api/supplier/<ID>

其中大多数 return 成功,但大约 5%-10% 的时间 API return 出现如下错误:

Whoops, looks like something went wrong.

1/1 PDOException in Connector.php line 50: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'

这表明以某种方式使用了错误的数据库配置。

代码中唯一可以找到字符串 'forge'(包括引号)的地方是
...\vendor\laravel\lumen-framework\config\database.php

然而,从相关的 mysql 部分看来,如果使用它,用户名 'forge' 也会被设置,而我的 .env 被忽略。

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'port'      => env('DB_PORT', 3306),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => env('DB_PREFIX', ''),
        'timezone'  => env('DB_TIMEZONE','+00:00'),
        'strict'    => false,
    ],

如果我直接从浏览器请求它们,我不会收到任何错误。

问题好像和请求频率有关,多requests/sec=多错误。
如果我重新加载页面,错误将出现在不同的项目上。

如果我用我的值 (database/username/pwd/prefix) 覆盖上面的 /vendor/.../config/database.php 那么我不会收到任何错误,但这很难正确的方法,让我怀疑某处存在错误。

环境:

我的问题是

  1. 这个 'forge' 数据库名称断断续续来自哪里?
  2. 如何始终在其中获取我的真实数据库详细信息?
  3. 我是否应该以某种方式汇集我的连接,因为可能有数百个 connections/sec 还是 laravel/lumen 已经解决了这个问题?

您可以在项目的根目录下创建一个配置目录,而不是在框架内覆盖文件 database.php,然后 database.php 创建一个文件,您可以按照自己的方式修改该文件。 Lumen 了解您想要使用自己的配置文件,而不是自带默认框架的配置文件。

检查是否在 bootstrap/app.php

中取消注释这一行
Dotenv::load(__DIR__.'/../');