0

我已经在我的休眠持久类中添加了一个字符串字段,并重新启动了应用程序。它启动了 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,休眠版本是3.0。

4

3 回答 3

2

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

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

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

于 2011-02-03T11:37:02.537 回答
1

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

于 2012-03-07T19:45:14.887 回答
1

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

这是手动操作的方法:

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

于 2014-11-20T00:43:01.433 回答