自从我尝试使用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,
),
[...]
),
);
有人知道如何找出问题所在吗?
答案 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',
);