函数 uuid_generate_v4() 不存在 postgres 11



我正在尝试使用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。从这里安装的邮政 - https://postgresapp.com/

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

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

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

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

相关内容

  • 没有找到相关文章

最新更新