工匠在Laravel 5中迁移,抛出PDOException

时间:2015-04-05 10:51:18

标签: laravel pdo

我刚刚创建了一个新的Laravel 5应用程序并编写了一些迁移。每当我尝试运行php artisan migrate时,都会遇到以下错误

  

[PDOException]
    SQLSTATE [HY000] [2002]无法通过socket'连接到本地MySQL服务器     /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的问题吗?

2 个答案:

答案 0 :(得分:1)

您可以将数据库配置(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')DB_DATABASE文件中获取.env的值,如果找不到,则会选择默认的' default_value'。

答案 1 :(得分:0)

由于配置使用env(),您需要设置项目根目录中的.env文件中的值。作为第二个参数传递的值是默认值,仅在.env文件中找不到特定键时使用。所以.env的数据库部分看起来像这样:

DB_HOST=localhost
DB_DATABASE=mydb
DB_USERNAME=myusername
DB_PASSWORD=mypassword

您可以阅读更多有关Laravel如何处理Configuration Docs中的环境的信息。