Laravel无法识别本地phpMyAdmin数据库问题求助
解决Laravel无法连接本地phpMyAdmin数据库&SQLSTATE[3D000]错误
嘿,我一眼就发现你配置里的核心问题——env()函数的用法完全错了!这也是导致你出现「SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected」错误的主要原因。
问题出在哪?
你现在的配置里写的是:
'host' => env('127.0.0.1'), 'database' => env('credito'), 'username' => env('root'), 'password' => env(''),
env()函数的参数应该是环境变量的名称,而不是直接写值。比如env('127.0.0.1')是在Laravel的环境变量里找名为127.0.0.1的变量,这显然不存在,所以Laravel根本拿不到正确的数据库信息,自然会报错“没选择数据库”。
正确的解决步骤
1. 修复config/database.php里的MySQL配置
把mysql连接部分改成下面这样——env()的第一个参数是.env文件里的变量名,第二个参数是默认值(如果环境变量不存在时用这个):
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'database' => env('DB_DATABASE', 'credito'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ]
2. 检查并修改.env文件
确保项目根目录的.env文件里有正确的数据库配置(如果没有.env,复制.env.example并重命名为.env):
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=credito DB_USERNAME=root DB_PASSWORD=
⚠️ 重点:一定要在phpMyAdmin里先创建好credito这个数据库!如果数据库本身不存在,哪怕配置全对也会报“没选择数据库”的错误。
3. 清除Laravel配置缓存
Laravel会缓存配置文件,修改配置后必须执行以下命令清除缓存:
php artisan config:cache
如果是开发环境,也可以用php artisan config:clear来清除缓存。
4. 测试数据库连接
打开终端,进入项目目录,执行:
php artisan tinker
然后输入:
DB::connection()->getPdo()
如果返回类似PDO Object (...)的内容,说明连接成功了;如果还有错误,再根据提示排查。
额外排查点
- 确认本地MySQL服务正在运行(phpMyAdmin能正常访问的话,一般服务是正常的)
- 检查
credito数据库的拼写是否完全一致(Linux系统下MySQL数据库名大小写敏感,Windows不敏感) - 确认root用户确实没有密码,或者
.env里的DB_PASSWORD和你的MySQL密码一致
内容的提问来源于stack exchange,提问作者user5272357
相关产品推荐
相关产品推荐

