无法将数据库迁移到 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