Laravel 7-AWS-Elastic Beanstalk + RDS 运行“php artisan migrate”时出错

NKo*_*Kol 3 amazon-web-services amazon-rds laravel amazon-elastic-beanstalk


我正在尝试在 AWS 上的 Elastic Beanstalk 中运行 Laravel 应用程序。
我在 AWS Elastic Beanstalk 上使用 Laravel 版本 7 和 PHP 7.4。
每次当我尝试运行“php artisan migrate”时,我都会收到此错误:
我的数据库 RDS 凭据全部正确。

照亮\数据库\QueryException

SQLSTATE[HY000] [2002] 连接被拒绝(SQL:select * from information_schema.tables where table_schema = forge and table_name = migrations and table_type
= 'BASE TABLE')

在供应商/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|

NKo*_*Kol 6

我解决了我自己的问题。

我通过 SSH在/var/www/html目录中运行

php artisan 迁移 -vv

获取迁移过程的调试日志和堆栈跟踪。
我注意到 Laravel 在运行迁移命令时没有使用环境变量(DB_HOST 等)。
所以我添加了.ebextensions目录并创建了一个新文件:
migration.config

container_commands:
     01migrations:
        command: "php artisan migrate"
Run Code Online (Sandbox Code Playgroud)

现在迁移正在工作,因为 Laravel 可以访问环境变量。因此,即使是最新版本的 Laravel 7、MYSQL 8.0.17 和 PHP 7.4 也可以在 Elastic Beanstalk RDS 上运行。

编辑:
如果您已在 AWS 中指定为环境变量:

APP_ENV =“生产”

使用php artisan migrate --force而不是php artisan migrate

问候 NKol