【发布时间】:2021-12-29 21:47:21
【问题描述】:
我有一个 NestJS (v8.2.x) 服务器应用程序,我正在尝试使用 TypeORM (v0.2.41) 连接到 AWS Arura 3.x (MySQL 8.x 协议) 或者mysql (v2.18.1) 或 mysql2 (v2.3.3) 驱动程序。该应用程序正在 GitHub 代码空间中运行。
当关注NestJS TypeORM documentation 时,我收到以下错误:
使用mysql2 驱动程序我得到:
ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
Error: connect ETIMEDOUT
...
使用mysql 驱动程序我得到:
[TypeOrmModule] Error: Handshake inactivity timeout
...
创建连接的代码如下:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
const MYSQL_HOST = '....rds.amazonaws.com';
const MYSQL_USERNAME = '...';
const MYSQL_PASSWORD = '...';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: MYSQL_HOST,
port: 3306,
username: MYSQL_USERNAME,
password: MYSQL_PASSWORD,
database: 'kitchen',
// entities: [__dirname + '/**/*.entity{.ts,.js}'],
debug: true,
logging: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
初步故障排除
首先,我验证了我在服务器应用程序中使用的凭据。我确认他们可以通过TablePlus 正常连接。因此,我排除了“无效凭据”并确定我遇到了另一个问题。
其次,在创建 AWS Arura 数据库时,我选择 Yes 到 Public Access:
VPC 外部的 Amazon EC2 实例和设备可以连接到您的数据库。选择一个或多个 VPC 安全组,指定 VPC 内的哪些 EC2 实例和设备可以连接到数据库。
【问题讨论】:
标签: mysql node.js nestjs typeorm amazon-aurora