Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot Hibernate在第一次启动空数据库时抛出约束警告_Java_Hibernate_Spring Boot_Jpa - Fatal编程技术网

Java Spring Boot Hibernate在第一次启动空数据库时抛出约束警告

Java Spring Boot Hibernate在第一次启动空数据库时抛出约束警告,java,hibernate,spring-boot,jpa,Java,Hibernate,Spring Boot,Jpa,我有一个Spring启动应用程序,我想创建带有实体注释的表。当我运行jar时,如果表已经存在,应用程序将在没有警告的情况下启动。 但如果数据库为空,则每个表都会收到以下警告: GenerationTarget encountered exception accepting command : Error executing DDL "alter table mytable drop constraint if exists FKk53mrkxu32slsax6fmn164ijy" via JDB

我有一个Spring启动应用程序,我想创建带有实体注释的表。当我运行jar时,如果表已经存在,应用程序将在没有警告的情况下启动。 但如果数据库为空,则每个表都会收到以下警告:

GenerationTarget encountered exception accepting command : Error executing DDL "alter table mytable drop constraint if exists FKk53mrkxu32slsax6fmn164ijy" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table mytable drop constraint if exists FKk53mrkxu32slsax6fmn164ijy" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.3.7.Final.jar!/:5.3.7.Final]
    at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) ~[hibernate-core-5.3.7.Final.jar!/:5.3.7.Final] (....)

以及:

即使有这些警告,应用程序也可以正常工作,那么有没有办法解决问题或抑制警告

My application.properties数据库相关行:

spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
spring.datasource.username=user
spring.datasource.password=user
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.initialize=true

spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=false

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
更新: 仅当表具有外键且异常结尾如下所示时,才会发生第一个较长的异常:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "mytable" does not exist


异常之后,Hibernate运行创建表。。。sql语句。

尝试验证您的表“mytable”是否存在,我认为您必须更改

spring.jpa.hibernate.ddl-auto=create


尝试添加
spring.datasource.initialization mode=始终

或者通过脚本初始化数据库。在resources文件夹中添加带有创建脚本的schema.sql文件,并将ddl auto更改为none。

我将此添加到我的application.properties以隐藏警告:

logger.org.hibernate=error

不过我想使用import.sql,它只适用于create或create-drop。
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.ddl-auto=update
logger.org.hibernate=error