Hibernate架构更新问题

时间:2011-02-03 11:15:48

标签: mysql hibernate indexing mysql-error-1005

我在我的hibernate持久化类中添加了一个字符串字段,然后重新启动了应用程序。它启动了SchemaUpgrade,导致了一些像这样的错误:

2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: alter table table_name add index FKCD10932052C35B33 (previewExample_id), add constraint FKCD10932052C35B33 foreign key (previewExample_id) references preview (id)
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Can't create table 'dbName.#sql-59c_1cc' (errno: 150)

该列已添加到数据库中。一切似乎都很好。除了那些错误,每次都弹出,我启动应用程序。

我可以做些什么来帮助它创建这些索引? DB是MySQL,hibernate版本是3.0。

3 个答案:

答案 0 :(得分:2)

这听起来不像是Hibernate问题。如果你尝试手动运行,你会发现你会遇到同样的问题。通过查看MySQL手册,我看到“errno:150”表示:

  

如果重新创建已删除的表,则它必须具有符合引用它的外键约束的定义。它必须具有正确的列名和类型,并且必须在引用的键上具有索引,如前所述。如果不满足,则MySQL返回错误号1005并在错误消息中引用错误150.

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

答案 1 :(得分:1)

还要确保引用列和引用列之间的TABLE_COLLATION相同...否则您也会收到该错误。

答案 2 :(得分:1)

对我来说,通过将所有表Engine更改为InnoDB来解决问题。

以下是手动操作方法:

https://stackoverflow.com/a/9492183/1988704