一、bug现场
今天部署laravel,在config中database.php配置后,运行发现并不生效。
开启debug模式后发现异常:
Illuminate \ Database \ QueryException (1045)
SQLSTATE[HY000] [1045] Access denied for user 'xxx'@'localhost' (using password: YES) (SQL: select * from `content` order by RAND() limit 1)
刚开始怀疑mysql的语句有问题,但是通过client端运营并没有发现问题排除mysql语法的问题。回到错误信息,我们发现是access denied for user xxx@localhost,然而xxx的用户并不存在。
可是仔细检查database.php后我们发现数据并没有配置错。
二、翻开laravel手册
发现配置上线的数据库的信息有一部分放到了隐藏文件".env",熟悉英文的同学应该发现这就是环境(environment)的缩写,证明laravel框架会默认加载这个配置文件。
这个文件在laravel的根目录下,用vim打开后发现确实有数据库配置项。
把mysql的信息填入后,运行发现OK。
这里需要注意的是,用户名密码错误都会报以上的错误,要多测试定位问题所在。