[英]Laravel 5.3 wont connect to mysql
我在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的了解還不足以找出問題所在。
嘗試更改您的db_host = localhost:3306
您定義一個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
的mysql命令行工具
解決了 經過幾個小時的梳理,我決定接受@nyedidikeke的建議並重新安裝mysql。 我正在使用MAMP,並且一直想停止使用它一段時間。 我卸載了它,並通過Homebrew安裝了mysql。 一切正常,感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.