php artisan migrate忽略数据库的本地环境目录中的设置
自从我尝试使用Homestead作为我的开发环境以来,我在Laravel4.2迁移中遇到了一个奇怪的问题。当我做一个php artisan migrate忽略数据库的本地环境目录中的设置,php,database-migration,homestead,laravel-4.2,Php,Database Migration,Homestead,Laravel 4.2,自从我尝试使用Homestead作为我的开发环境以来,我在Laravel4.2迁移中遇到了一个奇怪的问题。当我做一个 php artisan migrate我收到以下错误: [PDOException] SQLSTATE[HY000] [1045] Access denied for user 'prod'@'localhost' (using password: YES) Laravel正在使用我的生产环境中的数据库设置,尽管Laravel检测到了正确的环境: $
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,
),
[...]
),
);
$cat app/config/local/database.php
我可以在错误消息中看到您的用户名是prod
。所以,你应该使用这个:
'username' => 'prod',
'password' => 'your_password',
注意:编辑数据库.php
是一种硬编码。如果您将项目上传到github
,则可以看到此文件。我总是喜欢使用.env
进行数据库和电子邮件配置。尝试在.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,
],
我当然会先发表评论,但我没有足够强大的代表。对不起。如果有人仍在寻找这个答案,那么问题评论中说明的问题与.env文件的使用有关。在Laravel 4.2中,最简单的解决方案是在应用程序目录中使用以下格式的.env.local.php文件:
我不知道,在文档中找不到关于.env文件的任何内容。请注意,我说的是Laravel 4.2(不是5.2,你的路就是你的路),根据文档,创建一个带有相应名称的目录,并覆盖此目录中的设置(请参阅),如果你不理解,请暂时忽略.env
。请在database.php
中提供正确的用户名
和密码
,作为我的答案。我确实了解.env的工作原理。但这种配置在Laravel 4.2中不存在。我在/app/config/local/database.php
(对于我的本地开发环境)和/app/config/database.php
中为数据库提供了正确的用户名和密码。更改/app/config/database.php
中的设置没有意义,因为这会破坏我的生产环境。这里的问题是:为什么Laravel忽略了我在/app/config/local/database.php
中的重写?您的错误消息是,您的用户名是prod
,主机名是localhost
,并且您有密码。另一方面,在您的配置中,您的用户名是homestad
,主机名是localhost
,密码是homestad
。我可以看到您的用户名与主机的用户名不匹配,不知道密码,因为它没有显示。我知道Laravel 5.2中的.env配置,但不知道4.2中的配置。根据Docs()创建一个包含环境名称和覆盖设置的目录,在这个版本中有方法,还是我遗漏了什么?