我想为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()
,但仍然给出相同的错误。我做错什么了吗?
您需要删除主键,更改列,然后重新创建它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句