我想为 Knex 迁移中的主键设置默认值,但我遇到了问题。这是我最初的迁移:
exports.up = (knex, Promise) => {
return knex.schema.createTable(
'users',
(table) => {
table.uuid('id').primary();
table.string('email');
}
);
};
Run Code Online (Sandbox Code Playgroud)
我想将该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();
}),
]);
};
Run Code Online (Sandbox Code Playgroud)
当我运行时,我收到以下错误:
migration failed with error: alter table "users" alter column "id" drop not null - column "id" is in a primary key
Run Code Online (Sandbox Code Playgroud)
基于此,看起来 Knex 正试图取消NOT NULL约束。我尝试在 a.notNullable()之前链接.defaultTo(),它仍然给出相同的错误。有什么我做错了吗?
这是为那些来这里搜索“如何在 Knex 迁移中设置默认值”的人提供的快速复制/粘贴答案
table.string('state').notNullable().defaultTo('pending')
Run Code Online (Sandbox Code Playgroud)
注意:notNullable()不是必需的。
| 归档时间: |
|
| 查看次数: |
7610 次 |
| 最近记录: |