【发布时间】:2019-08-09 02:23:46
【问题描述】:
我知道这可能是一个反复出现的问题,但我在网上找到的解决方案似乎都无法解决我的问题。
我有一个 Laravel 5.8 项目,但我无法从控制器访问我的数据库,所有 artisan 命令都可以正常工作(如 php artisan migrate)
但是当尝试一个简单的事情时:
protected function test()
{
return User::all();
}
我收到SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `users` where `users`.`deleted_at` is null)
我只是试图访问我的本地数据库(来自 OSX) 我的配置:
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=secret
database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'database'),
'username' => env('DB_USERNAME', 'database'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
我的数据库正在运行(我可以使用 IDE 或其他方式访问它)
感谢您的帮助!
【问题讨论】:
-
您的 IDE 中是否有不同的连接设置?例如,
localhost而不是127.0.0.1? -
您可以尝试从您的控制器执行插入查询吗?如果它正在工作,则不允许在您的 conf 中名为“数据库”的用户执行 SELECT 查询(但可以执行 INSERT 查询,这可以解释成功的迁移),如果是这种情况,请从您的 mysql 提示符中尝试:GRANT SELECT ON database.* TO 'database'@'localhost';
-
感谢您的回答@TravisBritz,我的 IDE 中有相同的设置
-
感谢@MohamedAyoubBENJELLOUN,但插入同样的问题
-
在你的 database.php 文件中注释包含空字符串值(密码和 unix_socket 定义)的行,你有同样的错误吗?如果是,将主机或端口值更改为错误的值,仍然得到相同的错误?
标签: php mysql database laravel connection