我之前在春季启动项目中使用过嵌入式德比。但是现在我通过Spring Initializr创建了具有derby依赖性的项目。我得到以下错误: 架构' SA'不存在 然后是 org.hibernate.tool.schema.spi.CommandAcceptanceException:通过JDBC语句执行DDL时出错
当我尝试运行我创建的早期项目时,Derby工作得很好。 PFB是早期项目的控制台:
2018-03-18 15:34:44.346 INFO 16560 --- [restartedMain] org.hibernate.cfg.Environment:HHH000021:字节码 提供商名称:javassist 2018-03-18 15:34:44.391 INFO 16560 --- [ restartedMain] o.hibernate.annotations.common.Version:HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2018-03-18 15:34:44.490 ** INFO 16560 --- [restartedMain] org.hibernate.dialect.Dialect
:HHH000400:使用方言:org.hibernate.dialect.DerbyDialect 2018-03-18 15:34:44.497 WARN 16560 --- [restartedMain] org.hibernate.dialect.DerbyDialect:HHH000430:DerbyDialect 方言已被弃用;使用特定于版本的方言之一 **而不是2018-03-18 15:34:45.094 INFO 16560 --- [restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000227:运行hbm2ddl schema export 2018-03-18 15:34:45.099 ERROR 16560 --- [ restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000389: 不成功:掉书表2018-03-18 15:34:45.099 ERROR 16560 --- [restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport:Schema ' SA'不存在2018-03-18 15:34:45.129 WARN 16560 --- [ restartedMain] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL警告 代码:10000,SQLState:01J01 2018-03-18 15:34:45.129 WARN 16560 --- [ restartedMain] o.h.engine.jdbc.spi.SqlExceptionHelper:数据库 '存储器:TESTDB'未创建,与现有数据库建立连接 代替。 2018-03-18 15:34:45.129 INFO 16560 --- [restartedMain] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000230:架构导出 完成2018-03-18 15:34:45.152 INFO 16560 --- [restartedMain] j.LocalContainerEntityManagerFactoryBean:初始化的JPA 用于持久性单元的EntityManagerFactory'默认'
我当前使用嵌入式德比的春季启动的控制台日志:
2018-03-18 15:42:23.234 INFO 11312 --- [主要] com.zaxxer.hikari.HikariDataSource:HikariPool-1 - 开始...... 2018-03-18 15:42:23.237 WARN 11312 --- [主要] ** com.zaxxer.hikari.util.DriverDataSource:已注册的驱动程序 找不到driverClassName = org.apache.derby.jdbc.EmbeddedDriver, 尝试直接实例化。 2018-03-18 15:42:23.844 INFO 11312 --- [ ** main] com.zaxxer.hikari.pool.PoolBase:HikariPool-1 - Driver 不支持连接的get / set网络超时。 (功能没有 已执行:无详细信息。)2018-03-18 15:42:23.847 INFO 11312 --- [
main] com.zaxxer.hikari.HikariDataSource:HikariPool-1 - 开始 完成。 2018-03-18 15:42:23.937 INFO 11312 --- [主要] j.LocalContainerEntityManagerFactoryBean:构建JPA容器 EntityManagerFactory用于持久性单元'默认' 2018年3月18日 15:42:23.969 INFO 11312 --- [主要] o.hibernate.jpa.internal.util.LogHelper:HHH000204:处理 PersistenceUnitInfo [name:default ...] 2018-03-18 15:42:24.136 INFO 11312 --- [主要] org.hibernate.Version
:HHH000412:Hibernate Core {5.2.14.Final} 2018-03-18 15:42:24.138 INFO 11312 --- [main] org.hibernate.cfg.Environment
:HHH000206:未找到hibernate.properties 2018-03-18 15:42:24.199 INFO 11312 --- [主要] o.hibernate.annotations.common.Version:HCANN000001:Hibernate Commons Annotations {5.0.1.Final} 2018-03-18 15:42:24.380 INFO 11312 --- [main] org.hibernate.dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.DerbyTenSevenDialect 2018-03-18 15:42:25.572 WARN 11312 --- [主要] o.h.t.s.i.ExceptionHandlerLoggedImpl:GenerationTarget 遇到异常接受命令:通过JDBC执行DDL时出错 声明org.hibernate.tool.schema.spi.CommandAcceptanceException:错误 通过JDBC语句执行DDL org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) 〜[hibernate-core-5.2.14.Final.jar:5.2.14.Final] at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) [休眠芯-5.2.14.Final.jar:5.2.14.Final]
我可以在两者之间找到的差异是,在当前日志(abv log)中它表示 com.zaxxer.hikari.util.DriverDataSource:已注册的驱动程序 找不到driverClassName = org.apache.derby.jdbc.EmbeddedDriver, 尝试直接实例化。
如果我们需要配置除了以下依赖项之外的东西来启用此德比,请告诉我。注意 - 除了上一个项目中的maven依赖项之外,我还要做任何事情。
Maven依赖:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
答案 0 :(得分:6)
请根据需要配置“ JPA配置”。我已经配置如下。您需要在application.properties文件中添加以下配置。
# PROFILES
spring.profiles.active=dev
# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=default
spring.jpa.show-sql=true
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.continue-on-error=false
spring.datasource.generate-unique-name=false
答案 1 :(得分:0)
derby使用的默认驱动程序是org.apache.derby.jdbc.AutoloadedDriver
,但是springboot和其他框架选择org.apache.derby.jdbc.EmbeddedDriver
。
导致驱动程序在初次使用数据源时找不到驱动程序。
关于Schema 'SA' does not exist
。
我认为您可以使用其他工具来连接derby,例如 ij 。并且它们使用的jdbc url相同。看起来好像连接了相同的数据库,但实际上不是。
这是解决问题的关键。
答案 2 :(得分:0)
将spring.jpa.hibernate.ddl-auto = update添加到您的application.properties 默认情况下是create-drop
答案 3 :(得分:0)
在appplication.properties中添加了它,并且有效
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database=default
spring.jpa.show-sql=true
答案 4 :(得分:0)
我在application.properties中添加了以下属性,它确实有效!
spring.jpa.hibernate.ddl-auto=update