首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate对象映射导致使用Liquibase的SQL错误(errno: 150)

问Hibernate对象映射导致使用Liquibase的SQL错误(errno: 150)
EN

Stack Overflow用户
提问于 2012-07-26 08:54:20
回答 1查看 1.2K关注 0票数 4

我面临以下问题:

在我的Java项目中,我使用SpringFramework、Maven和数据库管理工具Hibernate 3.6和Liquibase进行更改管理。

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

两个类具有具有关系的对象实体。注意以下代码:

代码语言:javascript
复制
@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;
...
...
}

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

代码语言:javascript
复制
@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日志中得到的结果错误:

严重26.07.12 10:12:液化:更改集classpath:dbchangelog.xml::1343227727949-11::mirco (生成)失败。错误:在更新时执行SQL ridesingle添加约束FKD5C95340EE9D2F8外键(routeoutbound)引用route (id)没有对删除操作的操作:无法创建表'backendtest。#SQL454_5f (errno: 150) liquibase.exception.DatabaseException:错误执行SQL ridesingle添加约束FKD5C95340EE9D2F8外键(routeoutbound)引用route (id)在更新时不执行任何操作,删除任何操作:无法创建表‘backendtest。#SQL454_5f‘(errno: 150)

最让我困惑的是“不能创建表:后台测试”。这完全没有意义,因为后端测试是数据库名,而不是表。当我重新部署项目时,当Liquibase试图将迁移数据库中的更改映射到项目使用的数据库时,就会出现这个错误。

EN

回答 1

Stack Overflow用户

发布于 2012-12-18 07:18:46

也许Liquibase或它的配置有问题:一些DBMS对临时表使用#前缀,这使我相信,无论是Liquibase还是MySQL,还是中间的某个层,都试图通过“复制-拖放-创建-复制”过程来执行ALTER TABLE,在这个过程中创建一个临时表。

发出ALTER TABLE的用户在backendtest数据库中有CREATE [TEMPORARY] TABLE特权吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11665718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档