似乎有一个相关的问题here .
我有一个 js 前端与 lumen REST API 通信。
我的前端最终可能每秒向同一端点发出大量请求。
比方说api/supplier/<ID>
其中大多数都会成功返回,但大约 5%-10% 的情况下 API 返回的错误如下:
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,
],
如果我直接从浏览器请求它们,我不会收到错误。
问题似乎与请求频率有关,每秒请求数越多 = 错误越多。
如果我重新加载页面,错误将出现在不同的项目上。
如果我用我的值(database/username/pwd/prefix)覆盖上面的/vendor/.../config/database.php 那么我不会收到任何错误,但这几乎不是正确的方法并且使得我怀疑某个地方有错误。
环境:
- Windows 8
- XAMPP 5.6.8 和 PHP 5.6.8
- Mysql 5.6.24
- Lumen 5.1.3(Laravel 组件 5.1.*)
我的问题是
- 这个间歇性的“伪造”数据库名称从何而来?
- 如何始终获取我的真实数据库详细信息?
- 我是否应该以某种方式集中我的连接,因为每秒可能有数百个连接,或者 laravel/lumen 是否已经处理好这个问题了?
最佳答案
您可以在项目的根目录上创建一个配置目录,然后在database.php中创建一个文件,您可以按照自己的方式修改该文件,而不是覆盖框架内的文件database.php。 Lumen 明白您想要使用自己的配置文件,而不是自带默认框架的配置文件。
检查是否在 bootstrap/app.php 中取消注释此行
Dotenv::load(__DIR__.'/../');
关于rest - laravel/lumen REST API 间歇性地修改 env 并使用 'forge' 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950400/