[英]Spring Boot H2 db for testing throws "Table not found" and "SQL syntax error"
[英]H2 SQL Syntax Error `expected “., COMMENT, (”` using Flyway w/ Spring Boot Test
我在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的“数据库特定” sql脚本的最佳方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.