@neil_arms

Почему не работает автоинкрементация в PostgreSQL при помощи knex?

Заношу данные в БД при помощи следующего кода:
try {
      await knex.insert(fields[0]).into(UniversitySpecialties_TABLE).returning(‘*’)
 
    } catch (error) {
      console.error(error);
      throw new DataBaseError(errors.get('DATA_BASE_ERROR'));
    }


Фрагмент файла-миграции:
.createTable('universitySpecialties', (table) => {
        table.increments('id').primary();
        table.integer('specialtyID').notNullable();
        table.integer('universityID').notNullable();
        table.integer('studentCount');
        table.string('educationProfileName', 5000).defaultTo(null);
        table.string('funding', 1000).defaultTo(null);
        table.string('educationLevel', 1000).defaultTo(null);
        table.string('educationForm', 1000).defaultTo(null);
        table.string('universitySpecialtySite', 10000).defaultTo(null);
        table.timestamps(true, true);
      })

Пример fields[0]:
fields[0]={
    specialtyID: 11,
    universityID: 14,
    studentCount: 35,
    educationProfileName: 'Муниципальное управление',
    funding: ‘budget',
    educationForm: ‘Очно',
    universitySpecialtySite: ‘https://www.ru',
}


И в итоге вот такая ошибка:
Ошибка при выполнении запроса на вставку error: insert into "universitySpecialties" ("educationForm", "educationProfileName", "funding", "specialtyID", "studentCount", "universityID", "universitySpecialtySite") values ($1, $2, $3, $4, $5, $6, $7) - duplicate key value violates unique constraint "universitySpecialties_pkey"
    at Parser.parseErrorMessage (/Users/andrejbulatov/Projects/Smart Entrance/node_modules/pg-protocol/dist/parser.js:287:98)
    at Parser.handlePacket (/Users/andrejbulatov/Projects/Smart Entrance/node_modules/pg-protocol/dist/parser.js:126:29)
    at Parser.parse (/Users/andrejbulatov/Projects/Smart Entrance/node_modules/pg-protocol/dist/parser.js:39:38)
    at Socket.<anonymous> (/Users/andrejbulatov/Projects/Smart Entrance/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:527:28)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9)
    at Readable.push (node:internal/streams/readable:234:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  length: 230,
  severity: 'ERROR',
  code: '23505',
  detail: 'Key (id)=(367) already exists.',
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: 'public',
  table: 'universitySpecialties',
  column: undefined,
  dataType: undefined,
  constraint: 'universitySpecialties_pkey',
  file: 'nbtinsert.c',
  line: '663',
  routine: '_bt_check_unique'
}


При всём при этом у меня установлена автоинкрементация id, и, по идее, все строки должны вставляться в конец. Но не вставляются
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Вот ошибка

duplicate key value violates unique constraint "universitySpecialties_pkey"
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы