Laravel 7- AWS - Elasti c Beanstalk + Ошибка RDS при запуске «php artisan migrate» - PullRequest
0 голосов
/ 09 мая 2020


Я пытаюсь запустить приложение Laravel в Elasti c Beanstalk на AWS.
Я использую Laravel Version 7 и PHP 7.4 на AWS Elasti c Beanstalk.
Каждый раз, когда я пытаюсь запустить "php artisan migrate" , я получаю эту ошибку:
Все учетные данные RDS моей базы данных верны.

Illuminate \ Database \ QueryException

SQLSTATE [HY000] [2002] В соединении отказано (SQL: выберите * из информации_sche ma.tables, где table_schema = forge и table_name = migrations и table_type
= 'BASE TABLE')

в vendor / laravel / framework / src / Illuminate / Database / Connection. php: 671 667 | // Если при попытке выполнить запрос возникает исключение, форматируем ошибку 668 | // сообщение для включения привязок с SQL, что приведет к исключению 669 | // гораздо полезнее для разработчика, чем просто ошибки базы данных. 670 | улов (исключение $ e) {671 | выбросить новое исключение QueryException (672 | $ query, $ this-> prepareBindings ($ bindings), $ e 673 |); 674 | } 675 |

1 Ответ

0 голосов
/ 09 мая 2020

Я решил свой вопрос.

Я запустил в каталоге / var / www/html через S SH

php artisan migrate -vv

, чтобы получить журнал отладки и трассировку стека процесса миграции.
Я заметил, что Laravel не использует переменные среды (DB_HOST et c.) При запуске команды миграции.
Итак, я добавил каталог .ebextensions и создал новый файл:
migration.config

container_commands:
     01migrations:
        command: "php artisan migrate"

Теперь миграция работает, потому что Laravel получает доступ к переменным окружения. Таким образом, даже новейшие версии Laravel 7, MYSQL 8.0.17 и PHP 7.4 работают на Elasti c Beanstalk RDS.

EDIT:
Если вы указали в AWS как переменную среды:

APP_ENV = "production"

используйте php artisan migrate --force вместо php artisan migrate

С уважением, NKol

...