Java Spring Boot Hibernate在第一次启动空数据库时抛出约束警告
我有一个Spring启动应用程序,我想创建带有实体注释的表。当我运行jar时,如果表已经存在,应用程序将在没有警告的情况下启动。 但如果数据库为空,则每个表都会收到以下警告: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
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