Laravel 7- AWS - 运行“php artisan migrate”时出现 Elastic Beanstalk + RDS 错误
Posted
技术标签:
【中文标题】Laravel 7- AWS - 运行“php artisan migrate”时出现 Elastic Beanstalk + RDS 错误【英文标题】:Laravel 7- AWS - Elastic Beanstalk + RDS Error when running "php artisan migrate" 【发布时间】: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 我编辑了所有安全组并为所有流量打开了所有端口(用于测试目的),因为我只是想让它工作。但它没有。那为什么我不能这样做呢? 【参考方案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
【讨论】:
以上是关于Laravel 7- AWS - 运行“php artisan migrate”时出现 Elastic Beanstalk + RDS 错误的主要内容,如果未能解决你的问题,请参考以下文章
错误 PHP - 无法分配内存(laravel + aws)
使用 AWS Elastic Beanstalk 的 Laravel 队列
AWS Beanstalk 使用 Grunt 任务部署 Laravel
Laravel 5.6 '/' 找到路由但未找到其他路由 AWS EC2
使用 aws fargate 有啥缺点(缺点)以及为啥我的 laravel 应用程序在 Fargate 与弹性 beantalk 上运行缓慢?