【问题标题】:NestJS - [TypeOrmModule] Unable to connect to the database. Retrying ER_PARSE_ERRORNestJS - [TypeOrmModule] 无法连接到数据库。重试 ER_PARSE_ERROR
【发布时间】:2020-10-20 02:38:47
【问题描述】:

无法使用正确的连接信息连接数据库,按照文档从 https://docs.nestjs.com/techniques/database 连接数据库

在 SQLYog 上连接的数据库

app.module.ts

中遵循相同的数据库信息
@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: null,
      database: 'the_local_db',
      entities: [
        Table_one,
      ],
      // entities: ['../typeorm/entities/*.ts'],

      synchronize: true,
    }),
    StaffModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

错误详情

`[Nest] 5528 - 06/30/2020, 1:39:51 AM [ExceptionHandler] ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行 +18m 的 ''"'' 附近使用正确的语法 QueryFailedError: ER_PARSE_ERROR: 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 1 行的 ''"'' 附近使用的正确语法

在新的 QueryFailedError (C:\Users\UserName\ProjectName\nrwl\src\error\QueryFailedError.ts:9:9) 在查询。 (C:\Users\UserName\ProjectName\nrwl\src\driver\mysql\MysqlQueryRunner.ts:167:37) 在查询。 (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\Connection.js:526:10) 在 Query._callback (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\Connection.js:488:16) 在 Query.Sequence.end (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) 在 Query.ErrorPacket (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\sequences\Query.js:92:8) 在 Protocol._parsePacket (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\Protocol.js:291:23) 在 Parser._parsePacket (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\Parser.js:433:10) 在 Parser.write (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\Parser.js:43:10) 在 Protocol.write (C:\Users\UserName\ProjectName\nrwl\node_modules\mysql\lib\protocol\Protocol.js:38:16)`

【问题讨论】:

  • 您应该包含您的 Table_one 实体的代码。 PS。在标题中,您提到的错误与问题文本中不同。
  • Table_one 实体已在文件顶部导入,但此处未显示。

标签: nestjs typeorm


【解决方案1】:

我遇到了类似的问题,经过验证的回复对我没有帮助。我能够使用mysql2 模块而不是mysql 来解决我的问题。

$ npm install mysql2 --save

我还必须卸载 mysql 模块才能连接到我的数据库

$ npm uninstall mysql --save

希望此回复能帮助其他陷入同一问题的人。

【讨论】:

    【解决方案2】:

    我刚刚删除了端口:3306,现在它可以工作了。

    @Module({
      imports: [
        TypeOrmModule.forRoot({
          type: 'mysql',
          host: 'localhost',
          username: 'root',
          password: null,
          database: 'the_local_db',
          entities: [
            Table_one,
          ],
          // entities: ['../typeorm/entities/*.ts'],
    
          synchronize: true,
        }),
        StaffModule,
      ],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule {}
    

    【讨论】:

      【解决方案3】:

      检查您是否在数据库配置中将同步连接选项设置为 true。使其为假。 它对我有用。

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      • 嗨,它对我有用。但是如果我需要在同步模式下运行,我必须将其设置为 true 对吗?为此有什么方法或解决方法吗?
      猜你喜欢
      • 2021-05-11
      • 2022-08-03
      • 2020-11-13
      • 2021-06-27
      • 1970-01-01
      • 2020-07-21
      • 2021-10-19
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多