我想加载cube扩展,但它可能已经加载了。所以我这样做
CREATE EXTENSION IF NOT EXISTS cube;
Run Code Online (Sandbox Code Playgroud)
文档说,当指定 IF NOT EXISTS 时,它不应该抛出错误。但它确实:
ff_postgres_1 | 2020-07-26 18:15:46.233 UTC [33] ERROR: duplicate key value violates unique constraint "pg_extension_name_index"
ff_postgres_1 | 2020-07-26 18:15:46.233 UTC [33] DETAIL: Key (extname)=(cube) already exists.
ff_postgres_1 | 2020-07-26 18:15:46.233 UTC [33] STATEMENT:
ff_postgres_1 | CREATE EXTENSION IF NOT EXISTS cube;
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我正在运行 PostgreSQL 12.3
你可以通过比赛得到这个。如果两个会话尝试同时创建扩展,则两个会话都无法IF NOT EXISTS看到另一个会话,因此两者都会通过该步骤。第一个将其行插入到 pg_extension 中的块获胜,其他块获胜。然后,一旦第一个会话提交,第二个会话就会解锁并失败并显示此消息。
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |