如何在Knex迁移中设置默认值?

我想为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章