gpt4 book ai didi

java - 架构管理异常 : Schema-validation: missing table [chk_groups] even when table is present in DB

转载 作者:行者123 更新时间:2023-12-04 13:39:56 26 4
gpt4 key购买 nike

首先,我知道在stackoverflow上有很多与此相关的问题,但没有一个能解决我的问题。这就是我发布这个的原因。

在尝试连接到 SQL 服务器数据库并尝试使用 hibernate.hbm2ddl.auto 的“验证”值验证现有数据库结构时,我遇到了一个非常奇怪的问题。 field 。但我得到以下错误,

SchemaManagementException: Schema-validation: missing table [chk_groups]

以下是我的实体配置,
@Table(name="chk_groups")
public class GroupEntity {
}

@Entity
@Table(name="chk_members")
public class MemberEntity {
}

我在属性文件中使用了正确的配置,如下所示,
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost\instanceName;databaseName=companyDB
spring.datasource.username=sa
spring.datasource.password=sa

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto = validate

现在在 MS sql server 中,默认模式名称是“dbo”,理想情况下应该在验证数据库结构时选择它。但可以肯定的是,当我第一次遇到表丢失错误时,我也尝试像下面那样手动配置它。仍然没有运气。
@Entity
@Table(name="chk_groups", schema="dbo")
public class GroupEntity {

@Entity
@Table(name="chk_members", schema="dbo")
public class MemberEntity {

我也尝试设置下面的属性,
spring.jpa.properties.hibernate.default_schema= dbo

我什至试过,
@Entity (name="chk_groups")
public class GroupEntity {
}

我 100% 确定 DB 表存在,因为我可以使用旧的 JDBC 模板方式访问它,并且可以对其执行所有 CRUD 操作而不会出现任何错误。

当我尝试使用 Spring Boot 和数据 JPA 方式通过 java 代码创建的实体验证现有数据库结构时,问题就出现了。我不能使用更新或创建或其他任何东西,因为数据库结构已经创建。我应该使用 java 实体映射到它。

我无法弄清楚可能导致此问题的问题是什么?这是否与用户只需验证架构所需的任何特定权限有关?有没有办法使用任何数据库查询权限来检查它?或者它可以是其他的东西吗?

我已经尽力了。请帮帮我。

最佳答案

我通过在 application.properties 中添加以下属性来解决它

spring.jpa.properties.hibernate.hbm2ddl.jdbc_metadata_extraction_strategy=individually

关于java - 架构管理异常 : Schema-validation: missing table [chk_groups] even when table is present in DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859044/

26 4 0