【发布时间】:2019-11-18 07:01:49
【问题描述】:
我在 Postgres 数据库上使用带有 Data JPA 和 Flyway 的 Spring Boot 2。在生产中一切正常。现在我正在尝试编写将在 H2 嵌入式数据库上运行的测试以用于测试目的。但是,测试遇到 SQL 语法错误。但是,我不明白语法有什么问题:
CREATE TABLE mysite_user (
id int8 NOT NULL,
thirdparty_user_id varchar(255) NULL,
email varchar(255) NULL,
first_name varchar(255) NULL,
PRIMARY KEY (id)
);
CREATE INDEX mysite_user_thirdparty_user_id_idx ON mysite_user USING btree (thirdparty_user_id) ;
这是错误:
Migration V1__Initial.sql failed
--------------------------------
SQL State : 42001
Error Code : 42001
Message : Syntax error in SQL statement "CREATE INDEX MYSITE_USER_THIRDPARTY_USER_ID_IDX ON MYSITE_USER USING[*] BTREE (THIRDPARTY_USER_ID) "; expected "., COMMENT, ("; SQL statement:
CREATE INDEX mysite_user_thirdparty_user_id_idx ON mysite_user USING btree (thirdparty_user_id) [42001-199]
Location : db/migration/V1__Initial.sql (/Users/me/Development/mysite-website/target/classes/db/migration/V1__Initial.sql)
Line : 20
Statement : CREATE INDEX mysite_user_thirdparty_user_id_idx ON mysite_user USING btree (thirdparty_user_id)
我做错了什么?
【问题讨论】:
-
它叫“Flyway”,而不是“Flywheel”。
-
谢谢@JBNizet,我更正了这个问题。
-
h2根本不支持USING btree部分 -
@a_horse_with_no_name 有没有办法在 Flyway 中为不同的数据库指定不同的 SQL?
-
我不知道 - 我只使用 Liquibase,它可以通过其(DBMS 独立)XML 格式轻松做到这一点
标签: java sql h2 flyway spring-boot-test