php artisan migrate игнорирует настройки в локальном каталоге среды для базы данных

У меня странная проблема с миграциями Laravel 4.2, так как я пытался использовать Homestead в качестве среды разработки. Когда я делаю
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,
),
[...]
),

);

Кто-нибудь знает, как выяснить, где проблема?

2

Решение

Я вижу в сообщении об ошибке ваше имя пользователя prod, Итак, вы должны использовать это:

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

Замечания: редактирование database.php это один из видов жесткого кодирования. И этот файл можно увидеть, если вы загрузите свой проект в github, Я всегда предпочитаю использовать .env для базы данных и настройки электронной почты.

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,
],

Сначала я бы прокомментировал, но у меня недостаточно сильного представителя. Сожалею.

0

Если кто-то все еще ищет этот ответ, проблема, освещенная в комментариях к вопросу, связана с использованием файла .env. В Laravel 4.2 самое простое решение — использовать файл .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',
);
0
По вопросам рекламы [email protected]