You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nest.js启动时SequelizeModule无法连接Postgres数据库求助

Nest + Sequelize 数据库连接异常问题

启动Nest应用时反复出现以下错误:

[Nest] 53044  - 08/10/2023, 1:51:34 AM   ERROR [SequelizeModule] Unable to connect to the database. Retrying (1)...

相关代码片段

AppModule 代码

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './modules/users/users.module';
import { SequelizeModule } from '@nestjs/sequelize';
import { Dialect } from 'sequelize';
import { ConfigModule } from '@nestjs/config';
import * as Joi from 'joi';

@Module({
  imports: [
    UsersModule,
    ConfigModule.forRoot({
      isGlobal: true,
      validationSchema: Joi.object({
        DATABASE_HOST: Joi.string().required(),
        DATABASE_PORT: Joi.number().required(),
        DATABASE_NAME: Joi.string().required(),
        DATABASE_USER: Joi.string().required(),
        DATABASE_PASS: Joi.string(),
        DATABASE_DIALECT: Joi.string().required(),
        APPS_PORT: Joi.number().required(),
        // SALT_ROUND: Joi.number().required(),
      }),
    }),
    SequelizeModule.forRoot({
      dialect: 'postgres' as Dialect,
      host: 'localhost',
      port: 5432,
      username: 'username',
      password: 'password',
      database: 'databaseName',
      autoLoadModels: true,
      synchronize: true,
      logging: true,
    }),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

Users 模块及实体代码

UsersModule 代码

@Module({
  controllers: [UsersController],
  providers: [UsersService],
  imports: [SequelizeModule.forFeature([User])],
})
export class UsersModule {}

User 实体代码

import { Column, DataType, Model, Table } from 'sequelize-typescript';
@Table({
  timestamps: true,
})
export class User extends Model<User> {
  @Column({
    type: DataType.STRING,
    allowNull: false,
  })
  username: string;

  @Column({
    type: DataType.STRING,
    allowNull: false,
  })
  password: string;
}

问题详情

使用 Sequelize + Postgres,数据库已创建,连接配置(库名、用户、密码、主机、端口)均正确,另有一款配置完全相同的应用可正常运行。

  • 设置 autoLoadModels: true 时触发上述连接错误;
  • 改为 autoLoadModels: false 后连接错误消失,但查询数据库时出现新错误:
    ERROR [ExceptionsHandler] Model not initialized: Member "findAll" cannot be called. "User" needs to be added to a Sequelize instance.
    

已尝试的解决方案:

  • 使用与正常应用相同的包版本;
  • 用 127.0.0.1 替代 localhost;
  • 删除 node_modules 后重新安装依赖。

内容的提问来源于stack exchange,提问作者SAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:49:51