2

自从我尝试使用 Homestead 作为我的开发环境以来,我对 Laravel 4.2 迁移有一个奇怪的问题。当我这样做时, php artisan migrate我收到以下错误:

[PDOException]           
SQLSTATE[HY000] [1045] Access denied for user 'prod'@'localhost' (using password: YES)  

Laravel 正在使用我的生产环境中的数据库设置,尽管 Laravel 检测到了正确的环境:

$ php artisan env
Current application environment: local

对应的database.php也已经到位:

$ cat app/config/local/database.php 
<?php

return array(

[...]    
    'connections' => array(

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'homestead',
            'username'  => 'homestead',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => true,
        ),
[...]
    ),

);

有人知道如何找出问题所在吗?

4

3 回答 3

0

如果有人仍在寻找此答案,则该问题的评论中阐明的问题与 .env 文件的使用有关。在 Laravel 4.2 中,最简单的解决方案是使用 app 目录下的 .env.local.php 文件,格式如下:

<?php

return array(
    'APP_ENV'=>'local',
    'DB_HOST'=>'127.0.0.1',
    'DB_PORT'=>'3306',
    'DB_NAME'=>'database_name',
    'DB_USER'=>'app_user',
    'DB_PASS'=>'app_password',
);

于 2016-08-12T01:09:13.673 回答
0

我可以在错误消息中看到您的用户名是prod. 所以,你应该使用这个:

'username'  => 'prod',
'password'  => 'your_password',

注意:编辑database.php是一种硬编码。如果您将项目上传到github. 我总是更喜欢.env用于数据库和电子邮件配置。

于 2015-12-27T10:42:03.723 回答
0

尝试在 .env 文件中设置值,而不是将它们硬编码到 database.php 中。然后在 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,
    ],

我会先评论,但我没有足够强大的代表。对不起。

于 2015-12-27T10:42:42.290 回答