使用 NestJs 和 Mysql 检查连接是不是成功

Posted

技术标签:

【中文标题】使用 NestJs 和 Mysql 检查连接是不是成功【英文标题】:Check if connection was successful using NestJs and Mysql使用 NestJs 和 Mysql 检查连接是否成功 【发布时间】:2021-07-04 18:18:51 【问题描述】:

标题不言自明,我开始学习 NestJS,我想知道是否有可能,例如 console.log 或其他方式,知道与数据库的连接是否成功。

当我运行 npm run start:dev 时,一切正常,但我仍然不确定我是否能够连接到数据库。

注意:我使用的是import TypeOrmModule from '@nestjs/typeorm/dist/typeorm.module';

编辑:如果您在运行您的应用程序(在您的终端上)后有此行

TypeOrmModule dependencies initialized

这意味着您已经成功地建立了与您的数据库的连接

【问题讨论】:

我所知道的是,您可以通过执行constructor(private readonly connection: Connection)(从'typeorm' 导入的Connection 类)之类的操作来获取数据库连接obj,并检查this.connection.isConnected 属性 【参考方案1】:

如果您的连接失败,您会在控制台中看到一个非常明显的错误:

[Nest] 1274   - 04/09/2021, 11:24:52 AM   [TypeOrmModule] Unable to connect to the database. Retrying (1)... +2042ms
Error: getaddrinfo ENOTFOUND localhast
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)

Unable to connect to the database. Retrying (2)... +3009ms
error: password authentication failed for user "mysql"
    at Parser.parseErrorMessage (nest/node_modules/pg-protocol/src/parser.ts:357:11)
    at Parser.handlePacket (nest/node_modules/pg-protocol/src/parser.ts:186:21)
    at Parser.parse (nest/node_modules/pg-protocol/src/parser.ts:101:30)
    at Socket.<anonymous> (nest/node_modules/pg-protocol/src/index.ts:7:48)
    at Socket.emit (events.js:315:20)
    at Socket.EventEmitter.emit (domain.js:483:12)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)

[Nest] 1412   - 04/09/2021, 11:32:36 AM   [TypeOrmModule] Unable to connect to the database. Retrying (2)... +3008ms
error: database "example" does not exist
    at Parser.parseErrorMessage (nest/node_modules/pg-protocol/src/parser.ts:357:11)
    at Parser.handlePacket (nest/node_modules/pg-protocol/src/parser.ts:186:21)
    at Parser.parse (nest/node_modules/pg-protocol/src/parser.ts:101:30)
    at Socket.<anonymous> (nest/node_modules/pg-protocol/src/index.ts:7:48)
    at Socket.emit (events.js:315:20)
    at Socket.EventEmitter.emit (domain.js:483:12)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at Socket.Readable.push (_stream_readable.js:212:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23)

没有消息意味着成功

【讨论】:

这就是我所坚持的,因为我无法从我的数据库中获取数据,我不确定。但设法让它工作,所以一切都很好!【参考方案2】:
import  Connection, createConnection, getConnectionManager  from 'typeorm';
const connectionManager = getConnectionManager();
try 
      getConnection(connection.name);
     catch (error) 
      await createConnection(connection);
    

【讨论】:

以上是关于使用 NestJs 和 Mysql 检查连接是不是成功的主要内容,如果未能解决你的问题,请参考以下文章

NestJs连接MySql:错误无法连接数据库

使用带有 TypeOrm 的 NestJS 连接 MySQL 数据库时出现问题

如何在 Nestjs 中创建 mongodb 连接提供程序

NestJS - 使用 DotEnv

tableau连接mysql时,出现无法连接服务器,检查服务器是不是正在运行以及您是不是有权访问?

未找到连接“默认”-TypeORM、NestJS 和外部 NPM 包