H2 Синтаксическая ошибка SQL "ожидается"., COMMENT, ("" с использованием Flyway с Spring Boot Test - PullRequest
1 голос
/ 08 июля 2019

Я использую Spring Boot 2 с данными JPA и Flyway в базе данных Postgres. Все отлично работает в производстве. Сейчас я пытаюсь написать тесты, которые будут выполняться на встроенной базе данных 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)

Что я делаю не так?

1 Ответ

0 голосов
/ 09 июля 2019

Возможно, что вы делаете неправильно, используя разные базы данных между prod и test. Как вы уже видели, ваши тесты в конечном итоге должны быть закодированы с учетом различий между базами данных, а также с потенциальным пропуском тонких граничных случаев, которые работают в одном БД, а не в другом.

Если вы хотите пойти по этому пути, это возможно - см. Лучший способ для "специфичных для базы данных" сценариев sql с Flyway

...