php artisan migrate忽略数据库

时间:2015-12-27 09:21:20

标签: php database-migration homestead laravel-4.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,
        ),
[...]
    ),

);

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

3 个答案:

答案 0 :(得分:0)

我可以在错误消息中看到您的用户名为public class MyClass : MyBaseClass, IMyInterface { public string MyClassProperty { get; set; } } public interface IMyInterface : IMyBaseInterface { string MyClassProperty { get; } } public class MyBaseClass : IMyBaseInterface { public string MyBaseProperty { get; set; } } public interface IMyBaseInterface { string MyBaseProperty { get; } } 。所以,你应该使用这个:

prod

注意:编辑'username' => 'prod', 'password' => 'your_password', 是一种硬编码。如果您将项目上传到database.php,则可以看到此文件。我总是喜欢使用github进行数据库和电子邮件配置。

答案 1 :(得分: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,
    ],

我会首先评论,但我没有足够强大的代表。遗憾。

答案 2 :(得分: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',
);