我在Macbook Air上创建了一个新用户(OS X版本10.11.2)。新用户具有完全管理员权限。我正在使用MAMP。 MySQL端口设置为3306.我可以用其他一切连接到MySQL。我的所有Laravel项目都停止连接到MySQL。当我尝试使用
时php artisan migrate
我明白了:
[PDOException]
SQLSTATE[HY000] [2002] Connection refused
这是我的.env的数据库部分:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=store
DB_USERNAME=clerk
DB_PASSWORD=inventory
我尝试过使用root用户和密码。我尝试过使用不同的端口。我尝试将主机切换到localhost。我已验证用户名和密码是否正确,以及用户是否可以访问数据库。 这是我的config / database.php文件的MySQL部分:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'store'),
'username' => env('DB_USERNAME', 'clerk'),
'password' => env('DB_PASSWORD', 'inventory'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
我一直在搜索,我似乎无法找到答案。我的旧Laravel 5.2项目也没有连接。我很确定这是由创建一个新用户引起的,但我不太了解MySQL以找出问题。
答案 0 :(得分:0)
尝试更改db_host = localhost:3306
答案 1 :(得分:0)
您定义engine = null
。据我所知,在编译创建查询时,引擎在MySqlGrammar.php
内部使用。我只看过VIEWS的空引擎。
尝试以下配置:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'store'),
'username' => env('DB_USERNAME', 'clerk'),
'password' => env('DB_PASSWORD', 'inventory'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
你确实在你的问题中提到了它,并认为以下是终端的作品
mysql -uclerk -pinventory -h127.0.0.1 -P3306 store
可能需要
mysql -uclerk -pinventory -hlocalhost -P3306 store
您可以使用项目中的info.php
文件检查其他内容,以便在将PDO作为模块引用时仔细检查所有内容是否正常。
<?php
phpinfo();
然后还可以使用一个小的PDO php脚本来查看你的连接是否正常工作。类似的东西:
<?php
$servername = "127.0.0.1";
$username = "clerk";
$password = "inventory";
try {
$conn = new PDO("mysql:host=$servername;port=3306;dbname=store;", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
还可以在虚拟路线中检查env('DB_DATABASE')
等给你的东西。
更新了要检查的内容2016.09.15
要确保env()
正在获取包含以下路线的正确信息,然后包含以下内容的输出:
Route::get('dbtest', function () {
$config = [
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
];
dd($config);
});
然后还以root用户身份访问mysql
并包含select语句的输出:
mysql> select host, user, password, authentication_string, password_expired from mysql.user;
当您使用MAMP时,请确保使用/Applications/MAMP/Library/bin/mysql
答案 2 :(得分:0)
它已经解决了。经过几个小时拉出我的头发,我决定采取@nyedidikeke建议并重新安装mysql。我正在使用MAMP,我一直想停止使用它。我卸载了它,并通过Homebrew安装了mysql。一切都很好,谢谢你的帮助!
答案 3 :(得分:0)
按照我在您的问题下面的评论中建议的方式执行了故障排除流程,所有操作都应按预期进行。
如果情况不是这样,你必须遗漏一些东西; ......我认为是一个PATH问题。
我建议您export your database,卸载您的MySQL,然后在here下载一个新的。
按照详细说明here的方法进行可能的修复。
有了这个,你的挑战肯定会得到解决。