Как изменить уникальное col на первичный ключ в миграции knex - PullRequest
0 голосов
/ 17 октября 2019

Я использую Knex с Postgres для моего сервера узлов. У меня есть таблица со следующим столбцом:

table.uuid('id').defaultTo((knex.raw('uuid_generate_v4()'))).unique();

Мне нужно изменить его, чтобы сделать его первичным ключом. Вот как выглядит мой файл миграции:

export async function up(knex: Knex): Promise<any> {
  return knex.schema.alterTable('orders', (table) => {
    table.dropUnique(["id"]);
    table.uuid('id').defaultTo((knex.raw('uuid_generate_v4()'))).unique().primary().alter();
  });
}


export async function down(knex: Knex): Promise<any> {
  return knex.schema.alterTable('orders', (table) => {
    table.uuid('id').defaultTo((knex.raw('uuid_generate_v4()'))).unique().alter();
  });
}

Прямая миграция работает нормально, но обратная миграция приводит к этой ошибке:

migration failed with error: alter table "orders" alter column "id" drop not null - column "id" is in a primary key
error: column "id" is in a primary key

Какой правильный способ сделать это?

...