SQL 语句 "CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP " 中的语法错误

Syntax error in SQL statement "CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP "

我正在尝试创建 h2 数据库架构。这是我的 sql

create extension if not exists uuid_ossp;

create table users
(
    user_id     uuid default uuid_generate_v4() not null,
    name        varchar(255),
    created_on  timestamp,
    modified_on timestamp
);

create table product
(
    product_id  uuid default uuid_generate_v4() not null,
    name        varchar(25),
    created_on  timestamp,
    modified_on timestamp
);

create table products_users
(
    user_id    uuid,
    product_id uuid
);

我得到一个错误

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP "; expected "OR, FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, SYNONYM, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX"; SQL statement: create extension if not exists uuid_ossp [42001-199]

我通过删除 create extension if not exists uuid_ossp; 并在表中添加 default random_uuid() 而不是 default uuid_generate_v4() 解决了这个问题。

对我来说,当我尝试使用 CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

就像@annswerg 试过的那样,它给了我以下错误,

错误:“CREATE EXTENSION IF NOT EXISTS ”处或附近的语法错误 第 1 行:如果不存在则创建扩展名“uuid-ossp”;

但是当我运行关注时,它没有任何错误,

创建扩展“uuid-ossp”;

没有 IF NO EXIST,

而我的 postgresql 版本是 PostgreSQL 10.15 (Ubuntu 10.15-0ubuntu0.18.04.1)

希望对以后可能遇到类似问题的人有所帮助。