Hibernate:为什么在启动时尝试删除/创建数据库?

时间:2016-11-13 11:35:05

标签: java spring hibernate spring-mvc

我是Spring的新人。我终于成功构建了我的应用程序而没有错误,但是当我查看输出时,我有很多我不理解的信息。

首先这个错误每个表,它似乎是一个Hibernate / Spring bug:

Hibernate: alter table entity.administrationaction drop constraint FKjaafjywumaavhae5kjyo34gx5
        2016-11-13 12:16:41.475 ERROR 2156 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000389: Unsuccessful: alter table entity.administrationaction drop constraint FKjaafjywumaavhae5kjyo34gx5
        2016-11-13 12:16:41.475 ERROR 2156 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : ERREUR: la relation « entity.administrationaction » n'existe pas 

然后对每个表格:

Hibernate: drop table if exists entity.administrationaction cascade

然后对每个表格:

Hibernate: create table entity.administrationaction (id  serial not null, action int4, creation_date timestamp, entity_class varchar(255), entity_id int4, message varchar(255), administrator_id int4, primary key (id))

所以就像Spring试图删除我的所有数据库并重新创建它一样。为什么?这是正常的还是我做错了什么?

4 个答案:

答案 0 :(得分:11)

放入application.properties/application.yml

  

spring.jpa.hibernate.ddl-自动=更新

可以使用值

设置此属性
1. update (Update the schema if necessary)
2. create (create the schema and destroy previous data)
3. create-drop (create and then destroy the schema at the end of the session)
4. none (disable ddl handling)
5. validate (validate the schema , make no changes to the database)

答案 1 :(得分:4)

查找hibernate.hbm2ddl.auto设置。您可能已将其设置为create-drop

答案 2 :(得分:1)

我在这里发现自己不了解Spring为何默认为create-drop的一些其他信息:

spring.jpa.hibernate.ddl-auto String: DDL模式。这实际上是“ hibernate.hbm2ddl.auto”属性的快捷方式。使用嵌入式数据库且未检测到任何模式管理器时,默认值为“ create-drop”。否则,默认为“无”。

来源:Javadoc

答案 3 :(得分:0)

spring.jpa.hibernate.ddl-auto=none

这对我有用,它没有弄乱桌子,只用了它。