RomanDillerNsk
@RomanDillerNsk
JavaScript

Почему модели не синхронизируются с базой?

Всем доброго времени суток. Пишу бекенд на nestjs + sequelize + postresql. Все норм, кроме того, что когда добавляю новый ключ в какую-то модель, синхронизация не работает. Таблица в бд обновляется если ее удалить, но новые ключи не создаются. Есть у кого-то мысли в чем может быть дело?

@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: '.env'
    }),
    SequelizeModule.forRootAsync({
      imports: [ ConfigModule ],
      useFactory: (configService: ConfigService) => ({
        dialect: configService.get('DB_DIALECT'),
        host: configService.get('DB_HOST'),
        port: +configService.get('DB_PORT'),
        username: configService.get('DB_USERNAME'),
        password: configService.get('DB_PASSWORD'),
        database: configService.get('DB_NAME'),
        synchronize: true,
        autoLoadModels: true,
        logging: false
      }),
      inject: [ ConfigService ]
    }),
    LoggerModule,
    // ... modules
  ]
})
export class AppModule {}


если в useFactory добавить
sync: { force: false, alter: true }
все работает, но nestjs выдает ошибку:
[Nest] 37383  - 09/28/2022, 2:24:50 PM   ERROR [SequelizeModule] Unable to connect to the database. Retrying (2)...
Error: 
    at Query.run (/home/.../node_modules/sequelize/src/dialects/postgres/query.js:76:25)
    at /home/.../node_modules/sequelize/src/sequelize.js:644:28
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at Function.sync (/home/.../node_modules/sequelize/src/model.js:1408:11)
    at Sequelize.sync (/home/.../node_modules/sequelize/src/sequelize.js:819:9)

и постоянно переподключается.
  • Вопрос задан
  • 803 просмотра
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Похоже на сетевую проблему.

Проведи диагностику на низком уровне. Пингуй хост DB_HOST.
Попробуй телнетом подключится к порту DB_PORT.

Потом - консолью
$ psql ....
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы