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
相关产品推荐
相关产品推荐

