NestJS - [TypeOrmModule] 无法连接到数据库。重试ER_PARSE_ERROR

问题描述 投票:0回答:9

无法使用正确的连接信息连接数据库,请按照来自 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 rwl\src rror\QueryFailedError.ts:9:9) 在查询。 (C:\Users\用户名\项目名 rwl\src\driver\mysql\MysqlQueryRunner.ts:167:37) 在查询。 (C:\Users\用户名\项目名 RWL ode_modules\mysql\lib\Connection.js:526:10) 在 Query._callback (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\Connection.js:488:16) 在 Query.Sequence.end (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) 在 Query.ErrorPacket (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\sequences\Query.js:92:8) 在 Protocol._parsePacket (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\Protocol.js:291:23) 在 Parser._parsePacket (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\Parser.js:433:10) 在 Parser.write (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\Parser.js:43:10) 在 Protocol.write (C:\Users\UserName\ProjectName RWL ode_modules\mysql\lib\protocol\Protocol.js:38:16)`

nestjs typeorm
9个回答
16
投票

检查数据库配置中是否将同步连接选项设置为 true。将其设置为 false。 这对我有用。


9
投票

我遇到了类似的问题,经过验证的回复对我没有帮助。我能够使用

mysql2
模块而不是
mysql
解决我的问题。

$ npm install mysql2 --save

我还必须卸载

mysql
模块才能连接到我的数据库

$ npm uninstall mysql --save

希望此回复可以帮助其他遇到同样问题的人。


8
投票

就我而言,解决方案有些不同,因为我的本地主机有不同的名称,有时会在 OSX 中发生,所以我通过 IP 地址 127.0.0.1 更改了“本地主机”

TypeOrmModule.forRoot({
  type: 'mysql',
  host: '127.0.0.1',
  port: 3306,
  username: 'test',
  password: '123456',
  database: 'nest',
  entities: ["dist/**/*.entity{.ts,.js}"],
  synchronize: true,
  dropSchema:true })

6
投票

我刚刚删除了端口: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 {}

0
投票

首先,我通过使用以下方法解决了我的问题: 1/在app.module中同步:false 2/nmp卸载mysql 3/npm安装mysql2 --> 当我运行 >>npm run start:dev 时一切正常


0
投票

您是否在本地启动了 XAMP mysql 服务器?因为我不是(:

只是提醒一下


0
投票

我通过使用连接 URL 而不是拆分 MongoDB URI 解决了这个问题。

dbConfig: {
    type: 'mongodb',
    url: process.env.MONGO_CONNECTION_STRING,
    ssl: true,
    useUnifiedTopology: true,
    autoLoadEntities: true,
    synchronize: false,
    logging: true,
}

哪里

MONGO_CONNECTION_STRING: mongodb://ussername:password@host_name:port/?authSource=admin
。这样就可以避免在 TypeORM 中出现此错误。此外,还有一个标志
useNewUrlParser: true
,可用于分别使用主机
username
password
来配置数据库。


0
投票

我通过将主机从

localhost
更改为
127.0.0.1
来解决它。 因为在
ipv6
中,
localhost
将转换为
::1
,但没有
127.0.0.1


0
投票

[Nest] 126688 - 02/21/2024, 9:44:38 PM 错误 [TypeOrmModule] 无法连接到数据库。重试 (1)...

检查数据库用户名密码

© www.soinside.com 2019 - 2024. All rights reserved.