JdbcSQLException 在 H2 中使用“MATCH simple”执行 PostgreSQL 查询

Vic*_*tor 5 postgresql spring h2

我试图在开发模式(使用 H2)下运行当前在生产中使用 PostgreSQL 数据库的设置,但出现错误。如果我可以重用生产 SQL 而无需对其进行任何更改,那就最好了。

使用此设置:

# H2 Database
spring.datasource.datasource-class-name=org.h2.jdbcx.JdbcDataSource
spring.datasource.url=jdbc:h2:mem:userregistry;DB_CLOSE_DELAY=-1;MODE=PostgreSQL
Run Code Online (Sandbox Code Playgroud)

这个查询:

CREATE TABLE IF NOT EXISTS users.user_userrole (
    user_signum VARCHAR(20) NOT NULL,
    role VARCHAR(255) NOT NULL,
    CONSTRAINT user_userrole_pk PRIMARY KEY (user_signum, role),
    CONSTRAINT user_fk FOREIGN KEY (user_signum) REFERENCES users.user (signum) MATCH SIMPLE,
    CONSTRAINT role_fk FOREIGN KEY (role) REFERENCES users.userrole   
  (role_name) MATCH SIMPLE
);
Run Code Online (Sandbox Code Playgroud)

引发此异常:

org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "<<SQL OMITTED FOR BREVITY>>"; 
expected "INDEX, ON, NOT, DEFERRABLE, NOCHECK, CHECK, ,, )";  [42001-185]
Run Code Online (Sandbox Code Playgroud)

请注意,我已经在使用Mode=PostgreSQL. 有任何想法吗?

谢谢

Tho*_*ler 3

H2数据库不支持MATCH SIMPLE(与Oracle、MS SQL Server、Apache Derby相同)。