postgresql 函数uuid_generate_v4()在11后不存在

egdjgwm8  于 2023-02-08  发布在  PostgreSQL
关注(0)|答案(3)|浏览(243)

我尝试使用node-pg-migrate并运行迁移在我的节点项目中创建表。当我运行迁移时,我得到函数uuid_generate_v4()不存在。
我检查了我的扩展,uuid-ossp是可用的。

extname  | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
-----------+----------+--------------+----------------+------------+-----------+--------------
 plpgsql   |       10 |           11 | f              | 1.0        |           | 
 uuid-ossp |    16384 |         2200 | t              | 1.1        |           | 
(2 rows)

我希望我的迁移运行,但它失败了。我正在Mac上使用Postgres 11。Postgres从这里安装-https://postgresapp.com/

jtoj6r0c

jtoj6r0c1#

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
r1zk6ea1

r1zk6ea12#

遗憾的是,我没有太多关于pg-migrate文件外观的信息,但您必须指定以下内容:

pgm.createExtension('uuid-ossp', { ifNotExists: true });
// and
pgm.createTable('my_table', {
    id: { type: 'uuid', primaryKey: true, default: new PgLiteral('gen_random_uuid()') },
    // ...
de90aj5v

de90aj5v3#

原因是创建扩展必须在不同的事务中。实际上,这意味着创建扩展需要一次迁移。只有在以后的迁移中,才使用uuid_generate_v4函数创建表。

相关问题