SequelizeForeignKeyConstraintError: вставка или обновление в таблице «состояния» нарушает ограничение внешнего ключа «states_country_id_fkey»

#node.js #postgresql #sequelize.js

#node.js #postgresql #sequelize.js

Вопрос:

Я пытаюсь вставить данные с помощью функции Sequelize Sync. но я получаю эту ошибку. проблема в том, что иногда данные вводятся успешно, а иногда нет

ошибка

 config/sequelize.js:295
SequelizeForeignKeyConstraintError: insert or update on table "states" violates foreign key 
constraint "states_country_id_fkey"
at Query.formatError 
(d:projectspetrolpumpnode_modulessequelizelibdialectspostgresquery.js:315:16)
at Query.run (d:projectspetrolpumpnode_modulessequelizelibdialectspostgresquery.js:87:18)
at processTicksAndRejections (internal/process/task_queues.js:97:5) {name: 
'SequelizeForeignKeyConstraintError', parent: error: insert or update on table "states" viol…ign key 
constraint "states_country_id_fkey"
…, original: error: insert or update on table "states" vio…gn key constraint "states_country_id_fkey"
…, sql: 'INSERT INTO "states" ("id","name","country_id"… 
untry_id","is_active","createdAt","updatedAt";', parameters: Array(5), …} 
  

это запрос

 sync function initial() {
try {
var country = await db.country.findOne({ where: { name: 'India' } });
if (!country) {
  db.country.create({
    name: "U.S.",
    is_active: "true"
  });
}

var state = await db.state.findOne({ where: { name: 'Gujarat' } });
if (!state) {
await  db.state.create({
    name: "California",
    country_id: "1",
    is_active: "true"
  });
 }
} catch (e) {
   console.log(e)
  }
}

db.sequelize.sync({ force: true }).then(() => {
  console.log("Drop and re-sync db.");
  initial();
});
  

Это ассоциация

 db.state.hasMany(db.city, {
  foreignKey: 'state_id'
});

db.country.hasMany(db.state, {
  foreignKey: 'country_id',
});
  

Я пытался использовать ссылку в файле модели, но получил нормальную ошибку

Ответ №1:

Я могу устранить ошибку. я не знаю, что это ошибка из-за версии, но когда я установил старую версию, которая работает для меня, это 5.21.3

Ответ №2:

Я также получил эту ошибку при создании API с использованием NodeJS и Sequelize. Вот как я смог решить проблему.

ОШИБКА: SequelizeForeignKeyConstraintError: вставка или обновление в таблице «состояния» нарушает ограничение внешнего ключа «states_country_id_fkey»

Из приведенной выше ошибки видно, что для таблицы состояний требуется идентификатор страны в качестве внешнего ключа. Это означает, что вы не сможете создать состояние, если указанный country_id отсутствует в таблице country.

РЕШЕНИЕ: я бы рекомендовал сначала заполнить таблицу «country», чтобы убедиться, что указанный country_id, на который ссылается таблица «state», присутствует.

Затем попробуйте вставить данные в таблицу состояний. Это должно решить проблему.