关于 Laravel / Lumen 偶尔会抛出关于 “forge” 相关的错误信息

Laravel 频繁刷新页面时,Mysql 偶尔会抛出以下错误信息:

SQLSTATE[HY000] [1049] Unknown database 'forge' ..........
SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)......

首先,我们定位问题的根源:config/database.php

根据 Laravel 中 database 的初始配置,我们可以了解到 forge 为 mysql 连接中 database 和 username 的默认配置。

所以究其根源:.ENV 中的配置由于某些原因并非总是能调取成功, 从而会使用 config/app.php、config/database.php 或系统中设置的默认值。

所以防止此类错误的产生,我们需要做到以下几点:

1、不能在 config 目录以外的文件使用 env 函数(在 config:cache 缓存配置后不会加载 env);

2、在 config 目录建立 database.php 配置文件,通过 env() 函数设置 Mysql 连接时 localhost、database、username、password 的参数值,并为其设置默认值;

3、缓存配置:php artisan config:cache。(这将缓存您的ENV和配置,从而避免了该问题。缺点是:只要您更改环境变量或配置,就必须运行此命令)。