dbexception.java,jpa – Spring Boot 2 – H2数据库 – @SpringBootTest – org.h2.jdbc.JdbcSQLException失败:表已经存...

无法测试

Spring Boot& H2使用schema.sql创建表的脚本.

所以,发生的事情是我设置了以下属性:

spring.datasource.driver-class-name=org.h2.Driver

spring.datasource.initialization-mode=always

spring.datasource.username=sa

spring.datasource.password=

spring.datasource.platform=h2

spring.datasource.url=jdbc:h2:mem:city;MODE=PostgreSQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

spring.jpa.generate-ddl=false

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql=true

并且,我希望使用schema.sql创建表.运行gradle bootRun时,应用程序正常工作.但是,当我使用gradle测试运行测试时,我对Repository的测试通过,但是我的服务的测试失败,说明当表已经存在时它正在尝试创建表:

提出例外:

Caused by: org.h2.jdbc.JdbcSQLException: Table "CITY" already exists;

SQL statement:

CREATE TABLE city ( id BIGINT NOT NULL, country VARCHAR(255) NOT NULL, map VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, state VARCHAR(2555) NOT NULL, PRIMARY KEY (id) ) [42101-196]

at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)

at org.h2.message.DbException.get(DbException.java:179)

at org.h2.message.DbException.get(DbException.java:155)

at org.h2.command.ddl.CreateTable.update(CreateTable.java:117)

at org.h2.command.CommandContainer.update(CommandContainer.java:101)

at org.h2.command.Command.executeUpdate(Command.java:260)

at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)

at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)

at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95)

at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)

at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:471)

... 105 more

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值