【问题标题】:Laravel 7- AWS - Elastic Beanstalk + RDS Error when running "php artisan migrate"Laravel 7- AWS - 运行“php artisan migrate”时出现 Elastic Beanstalk + RDS 错误
【发布时间】:2020-08-24 14:44:31
【问题描述】:


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

照亮\数据库\查询异常

SQLSTATE[HY000] [2002] 连接被拒绝(SQL: select * from information_sche ma.tables 在哪里 table_schema = forge 和 table_name = 迁移和 table_type
= '基表')

在 供应商/laravel/framework/src/Illuminate/Database/Connection.php:671 667| // 如果尝试运行查询时发生异常,我们将格式化错误 668| // 包含与 SQL 的绑定的消息,这将使异常 a 669| // 对开发人员更有帮助,而不仅仅是数据库的错误。 670|捕获(异常 $e){ 671|抛出新的查询异常( 672| $query, $this->prepareBindings($bindings), $e 673| ); 674| } 675|

【问题讨论】:

  • 你不能那样做.. RDS 会阻止来自 laravel 的查询,也许你在 RDS 中为此创建了一个权限......但最简单的方法是运行 aws ligthsail 而不是 beanstalk,这样你的代码和数据库就在同一个服务器上,这就是我所做的。
  • @Alex Guerrero 我编辑了所有安全组并为所有流量打开了所有端口(用于测试目的),因为我只是想让它工作。但它没有。那为什么我不能这样做呢?

标签: laravel amazon-web-services amazon-elastic-beanstalk amazon-rds


【解决方案1】:

我解决了我自己的问题。

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

php artisan 迁移 -vv

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

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

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

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

APP_ENV = "生产"

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

问候 NKol

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 2019-04-03
    • 2018-08-04
    • 2020-05-29
    • 1970-01-01
    • 2017-05-31
    • 2016-05-14
    • 2020-07-24
    相关资源
    最近更新 更多