Knexの移行で主キーのデフォルト値を設定したいのですが、問題が発生しています。これは私の最初の移行です:
_exports.up = (knex, Promise) => {
return knex.schema.createTable(
'users',
(table) => {
table.uuid('id').primary();
table.string('email');
}
);
};
_
id
フィールドをランダムなUUIDにデフォルト設定したいと思います。これが私の次の移行です:
_exports.up = (knex, Promise) => {
return Promise.all([
knex.raw('create extension if not exists "uuid-ossp"'),
knex.schema.alterTable('users', (table) => {
table.uuid('id')
.defaultTo(knex.raw('uuid_generate_v4()'))
.alter();
}),
]);
};
_
これを実行すると、次のエラーが発生します。
_migration failed with error: alter table "users" alter column "id" drop not null - column "id" is in a primary key
_
これに基づいて、Knexが_NOT NULL
_制約を削除しようとしているように見えます。 .notNullable()
の前に.defaultTo()
をチェーニングしようとしましたが、それでも同じエラーが発生します。私が間違っていることはありますか?
主キーを削除し、列を変更してから、再作成する必要があります。