gpt4 book ai didi

java - Hibernate 对象映射导致 SQL 错误 (errno : 150) with Liquibase

转载 作者:可可西里 更新时间:2023-11-01 07:45:27 24 4
gpt4 key购买 nike

我面临以下问题:

对于我的 Java 项目,我使用 SpringFramework、Maven 和用于数据库管理的 Hibernate 3.6 以及用于变更管理的 Liquibase。

现在我面临一个困扰我的问题。它与应从 Hibernate 创建的外键约束有关。

2 类具有具有关系的对象实体。观看以下代码:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class SearchSingle extends OfferSearch implements Comparable<SearchSingle>, OfferSingle {
private static final long serialVersionUID = 7618785527154737982L;

@ManyToOne
private Route routeOutbound;

@ManyToOne
private Route routeWayBack;
...
...
}

现在另一个类有相应的对象:

@JsonAutoDetect
@Entity
public class Route extends PersistentObject {

private static final long serialVersionUID = -4611710805557036851L;
@OneToMany(mappedBy = "routeOutbound")
@Cascade(CascadeType.SAVE_UPDATE)
private List<SearchSingle> searchesOutbound;

@OneToMany(mappedBy = "routeWayBack")
@Cascade(CascadeType.SAVE_UPDATE)
private List<SearchSingle> searchesWayBack;

...
}

在这里查看我在 tomcat 日志中得到的结果错误:

SEVERE 26.07.12 10:12:liquibase: Change Set classpath:dbchangelog.xml::1343227727949-11::mirco (generated) failed. Error: Error executing SQL ALTER TABLE ridesingle ADD CONSTRAINT FKD5C95340EE9D2F8 FOREIGN KEY (routeoutbound) REFERENCES route (id) ON UPDATE NO ACTION ON DELETE NO ACTION: Can't create table 'backendtest.#sql-454_5f' (errno: 150) liquibase.exception.DatabaseException: Error executing SQL ALTER TABLE ridesingle ADD CONSTRAINT FKD5C95340EE9D2F8 FOREIGN KEY (routeoutbound) REFERENCES route (id) ON UPDATE NO ACTION ON DELETE NO ACTION: Can't create table 'backendtest.#sql-454_5f' (errno: 150)

最让我困惑的是“无法创建表:后端测试”。这根本没有意义,因为 backendtest 是数据库名称而不是表。当我重新部署项目并且 Liquibase 尝试将更改从 migrationdb 映射到项目使用的数据库时出现此错误。

最佳答案

可能 Liquibase 或其配置存在问题:某些 DBMS 对临时表使用 # 前缀这一事实让我相信 Liquibase 或 MySQL 或两者之间的某个层试图执行ALTER TABLE 通过“copy-drop-create-copy”过程在过程中创建临时表。

发出 ALTER TABLE 的用户在 backendtest 数据库中是否具有 CREATE [TEMPORARY] TABLE 权限?

关于java - Hibernate 对象映射导致 SQL 错误 (errno : 150) with Liquibase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com