Artisan 在 Laravel 5 中迁移抛出 PDOException
Artisan migrate in Laravel 5 throwing PDOException
我刚刚创建了一个新的 Laravel 5 应用程序并编写了一些迁移。每当我尝试 运行 php artisan migrate
时,我都会遇到以下错误
[PDOException]
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '
/var/lib/mysql/mysql.sock' (13)
我的数据库配置是正确的
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'), //I also tried 127.0.0.1
'database' => env('DB_DATABASE', 'mydb'),
'username' => env('DB_USERNAME', 'myusername'),
'password' => env('DB_PASSWORD', 'mypassword'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
我正在使用 LAMP 堆栈,这可能是 Laravel 5 的问题吗?
由于配置使用 env()
,您需要在项目根目录中的 .env
文件中设置值。您作为第二个参数传递的值是默认值,只有在 .env
文件中找不到特定键时才会使用该值。所以 .env
的数据库部分看起来像这样:
DB_HOST=localhost
DB_DATABASE=mydb
DB_USERNAME=myusername
DB_PASSWORD=mypassword
您可以在 Configuration Docs 中阅读有关 Laravel 如何处理环境的更多信息。
您可以将数据库配置 (database.php
) 修改为此
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost,
'database' => 'YOUR DB NAME',
'username' => 'YOUR DB USERNAME',
'password' => 'YOUR DB PASSWORD,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
或者您可以设置 .env
文件
每个 Laravel
应用程序现在都附带一个默认的 .env.example
文件,目前看起来像这样:
APP_ENV=local
APP_KEY=SomeRandomString
DB_DATABASE=your_db_name
DB_USERNAME=your_username
DB_PASSWORD=your_db_password
要使用此文件,只需将其复制并命名副本(新文件).env
并输入您的数据库详细信息。
.env
文件应该在根文件夹中,如 .env.example
。
注意:- 不要重命名 .env.example
文件....总是创建一个新的 .env
如果未找到,env('DB_DATABASE', 'default_value')
从 .env
文件中获取 DB_DATABASE
的值,则选择默认值 'default_value'。
我刚刚创建了一个新的 Laravel 5 应用程序并编写了一些迁移。每当我尝试 运行 php artisan migrate
时,我都会遇到以下错误
[PDOException]
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '
/var/lib/mysql/mysql.sock' (13)
我的数据库配置是正确的
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'), //I also tried 127.0.0.1
'database' => env('DB_DATABASE', 'mydb'),
'username' => env('DB_USERNAME', 'myusername'),
'password' => env('DB_PASSWORD', 'mypassword'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
我正在使用 LAMP 堆栈,这可能是 Laravel 5 的问题吗?
由于配置使用 env()
,您需要在项目根目录中的 .env
文件中设置值。您作为第二个参数传递的值是默认值,只有在 .env
文件中找不到特定键时才会使用该值。所以 .env
的数据库部分看起来像这样:
DB_HOST=localhost
DB_DATABASE=mydb
DB_USERNAME=myusername
DB_PASSWORD=mypassword
您可以在 Configuration Docs 中阅读有关 Laravel 如何处理环境的更多信息。
您可以将数据库配置 (database.php
) 修改为此
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost,
'database' => 'YOUR DB NAME',
'username' => 'YOUR DB USERNAME',
'password' => 'YOUR DB PASSWORD,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
或者您可以设置 .env
文件
每个 Laravel
应用程序现在都附带一个默认的 .env.example
文件,目前看起来像这样:
APP_ENV=local
APP_KEY=SomeRandomString
DB_DATABASE=your_db_name
DB_USERNAME=your_username
DB_PASSWORD=your_db_password
要使用此文件,只需将其复制并命名副本(新文件).env
并输入您的数据库详细信息。
.env
文件应该在根文件夹中,如 .env.example
。
注意:- 不要重命名 .env.example
文件....总是创建一个新的 .env
如果未找到,env('DB_DATABASE', 'default_value')
从 .env
文件中获取 DB_DATABASE
的值,则选择默认值 'default_value'。