使用Mac OS X和Homestead 2.2.1与Laravel 5.2。
在终端(在我的项目文件夹中的宅基地内)我可以做php artisan来查看所有可用的命令。当我尝试运行php artisan migrate时出现连接错误:
SQLSTATE[HY000] [2002] Connection refused
我已经使用这些.env设置设置了Laravel项目
DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret
我还尝试过DB_HOST的localhost和DB_USERNAME以及DB_PASSWORD的root。所有这些可能的变化放在一起!
在Sequel Pro(数据库管理应用程序)中,我可以连接这些设置
Host 127.0.0.1
Username homestead
Password secret
Database tcv
Port 33060
但是这个数据库显然是空的,因为我无法从终端迁移到它...
据我所知,这是一个配置问题,因为我可以使用Sequel Pro连接它。但我老老实实地没有想到什么是错误的设置。
谢谢您的帮助 !!
编辑
出于某种原因,当我将项目移动到MAMP并运行php artisan migrate时,我得到了相同的SQLSTATE[HY000] [2002] Connection refused
错误。
现在我完全迷失了......
我刚刚碰到这个,发现将.env文件中的这个从127.0.0.1
更改为localhost
修复了它。
DB_HOST=localhost
将所有配置放在.env文件后,如果您已经运行php artisan serve
,那么RESTART IT。
您的mysql
可能尚未启动或未启动到3306
端口
我,我使用流浪汉,但我在框外执行php工匠所以基本上它没有权限
对我来说,用引号括起凭证就可以了
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'
如果您使用Homestead
,那么您应该使用默认的mysql端口运行它。因此,您应该在.env文件中使用DB_PORT=33060
,而不是使用DB_PORT=3306
。此外,请记住在家园安装中运行php artisan migrate
命令,一切都应该没问题。
希望有所帮助。
解决它的唯一问题是将连接细节放在config / database.php而不是.env文件中。希望这可以帮助
我有一个类似的问题,这里没有任何建议帮助我。这解决了我的问题是使用相同的值设置应用程序名称和数据库主机名。在我的情况下,127.0.0.1正常工作。
APP_URL=127.0.0.1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX
好的更新似乎主机不是问题,但实际上是端口。
所以它实际上是用于浏览器测试的端口3306,还用于终端和Sequel Pro 33060.它是否与在Homestead.yaml中添加它并将其设置在这里有关?
在阅读与Laravel相关的设置时,它说:
MySQL:33060→前锋到3306
我可能是因为你可能没有重新启动PHP工匠
所以在进行数据库更改和配置后:清除Tinker工作正常
但要使浏览器反映您需要重新运行的新数据库连接
php工匠服务
如果它仍然抛出相同的问题,从根文件夹运行
php artisan cache:clear
php artisan config:cache
php artisan serve
问题
在Laravel中,您有config/database.php
,其中所有连接设置都位于此处。您还在项目的根目录中有一个.env
文件(每个人都用它来节省时间)。这包含可用于整个项目的变量。
在标准的L5项目中,config/database.php
的MySql部分如下所示:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
请注意,没有设置端口!
虽然在我的.env
文件中我设置了DB_PORT=33060
。但那value (3306)
从未被读入config/database.php
。
所以不要像我一样傻瓜,忘记检查database.php
文件。
'port' => env('DB_PORT', 3306),
to your config/database.php and set that value in .env like this DB_PORT=33060
我遇到了
SQLSTATE [HY000] [2002]拒绝连接(SQL:select * from projects)
原因是我没有启动MySQL服务器。
检查MySQL是否正在运行作为纠正错误的第一步可能会有所帮助。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8080
DB_DATABASE=flap_safety
DB_USERNAME=root
DB_PASSWORD=mysql
上面给出的是我的.env
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'mysql'),
// 'port' => env('DB_PORT', '8080'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', 'mysql'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
上面给出的是我的database.php文件。我刚刚从database.php注释掉了端口,它对我有用。
如果您在Mac OS上使用MAMP,请将以下行添加到您的mysql数据库配置文件中
'unix_socket' => env('DB_SOCKET', ''),
并在你的.env文件中添加
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
使用localhost
而不是127.0.0.1
(在.env文件中),然后运行命令:
php artisan config:cache
对于有问题的其他人来说,另一种解决方案我有所有设置正确但由于某种原因我的更改没有更新。 Laravel实际上缓存了配置文件(我发现它完全是愚蠢的)。
更新配置后,这是我的解决方案:
php artisan config:clear
我遇到了这个问题。当与Sequel Pro连接时,我需要使用33060
作为端口,但在.env文件中它必须是3306
。我在.env文件中有33060
。将其更改为3306
并且有效。
这是一个简单的修复。您的mysql数据库已丢失与服务器的连接。如果您正在运行本地服务器,请在终端中运行:
mysqld
这将重新连接您的数据库。然后(如果你使用自制软件)运行:
brew services start mysql
这将在登录时自动连接您的数据库。
我有同样的问题,尝试这个工作
DB_HOST=localhost
在我的情况下,这个错误出现了蓝色。在盯着我已经意识到的那个神秘错误时,我试图在vm之外运行命令......