sequelize migration抛出ERROR:函数uuid_generate_v4()不存在



我用CREATE EXTENSION IF NOT EXISTS "uuid-ossp";启用uuid扩展

然后运行sequelize为迁移生成的相同查询,它工作了,

create table if not exists "MY_SCHEMA"."Users" ("id" UUID not null default uuid_generate_v4() ,
"phone" VARCHAR(10) not null,
"password" VARCHAR(50) not null,
"isDeleted" BOOLEAN default false,
"role" "MY_SCHEMA"."enum_Users_role" default 'Student',
"createdAt" TIMESTAMP with TIME zone not null,
"updatedAt" TIMESTAMP with TIME zone not null,
primary key ("id"));

但是,sequelize抛出下面的错误,

ERROR: function uuid_generate_v4() does not exist

这是迁移文件,

const SCHEMA = 'MY_SCHEMA';
const TABLE_WITH_SCHEMA = { tableName: 'Users', schema: SCHEMA };
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable(TABLE_WITH_SCHEMA, {
id: {
allowNull: false,
primaryKey: true,
defaultValue: Sequelize.literal('uuid_generate_v4()'),
type: Sequelize.UUID
},
phone: {
type: Sequelize.STRING(10),
allowNull: false
},
password: {
type: Sequelize.STRING(50),
allowNull: false
},
isDeleted: {
type: Sequelize.BOOLEAN,
defaultValue: false
},
role: {
type: Sequelize.ENUM('Admin', 'Teacher', 'Student'),
defaultValue: 'Student'
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
await queryInterface.addIndex(TABLE_WITH_SCHEMA, ['phone'], {
indicesType: 'UNIQUE'
});
},
async down(queryInterface) {
await queryInterface.dropTable(TABLE_WITH_SCHEMA);
}
};

PostgreSQL vs13及更高版本本机支持gen_random_uuid()

gen_random_uuid () → uuid

此函数返回版本4(随机)UUID。这是最常用的UUID类型,适用于大多数应用程序。

最新更新