无法将数据库迁移到 AWS 弹性 Beanstalk

Posted

技术标签:

【中文标题】无法将数据库迁移到 AWS 弹性 Beanstalk【英文标题】:Cannot migrate Database to AWS elastic Beanstalk 【发布时间】:2020-11-04 13:07:03 【问题描述】:

我在 AWS 中托管了一个站点。我为弹性 beantalk 创建了一个 RDS 数据库实例。 在我的 laravel 应用程序的 config/database.php 文件中,我已将数据库连接配置为:

'mysql' => [
         'driver' => 'mysql',
         'host' => 'mydbidentefier.cdh7pykyg7in.ap-south-1.rds.amazonaws.com',
         'port' => 3306,
         'database' => 'mydbidentefier',
         'username' => 'admin',
         'password' => 'mypw',
         'unix_socket' => env('DB_SOCKET', ''),
         'charset' => 'utf8mb4',
         'collation' => 'utf8mb4_unicode_ci',
         'prefix' => '',
         'strict' => true,
         'engine' => null,
     ],

现在,当我尝试通过 SSH 进入 EC2 实例来运行 php artisan migrate 时,我收到此错误:

SQLSTATE[HY000] [1049] 未知数据库 'mydbindentifier' (SQL: select * from projects)

“mydbidentifier”是显示在 RDS 控制台中的数据库标识符。怎么会找不到呢。

还有一件事:我应该不能通过 SSH 连接到 EC2 实例从命令行运行 mysql 吗?当我通过 SSH 进入 EC2 命令行终端尝试 mysql -u root -p 时。我收到另一个错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我错过了什么吗? 任何指导将不胜感激。

【问题讨论】:

【参考方案1】:

“mydbidentifier”是显示在 RDS 控制台中的数据库标识符。怎么会找不到呢。

默认情况下RDS 不会为您创建数据库。它只是创建一个数据库实例。要创建数据库,您需要明确选择加入:

如果您还没有这样做,则必须在使用数据库客户端连接到您的数据库实例后,使用常规的SQL命令创建数据库,例如CREATE DATABASE <name>;

当我通过 SSH 连接到 EC2 命令行终端尝试 mysql -u root -p 时。我收到另一个错误

您必须明确指定主机,如docs 中所示,例如

mysql -u root -p  -h mydbidentefier.cdh7pykyg7in.ap-south-1.rds.amazonaws.com

【讨论】:

以上是关于无法将数据库迁移到 AWS 弹性 Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

如何将现有的 Web 应用程序从 Heroku 迁移到 AWS

无法将弹性 IP 地址关联到我的 AWS ECS 实例

无法使用多个 IIS 应用程序创建弹性 beanstalk

AWS 弹性搜索。禁止/8/索引写入 (api)。无法写入索引

AWS 弹性负载均衡器超时

将Java存储过程迁移到AWS RDS oracle