【问题标题】:Hibernate Schema update issue休眠模式更新问题
【发布时间】:2011-06-20 14:28:41
【问题描述】:

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

【问题讨论】:

    标签: mysql hibernate indexing mysql-error-1005


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,有没有办法向 mySQL db 添加一列(不是主键或外键)?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      这是手动操作的方法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 2017-11-19
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 2011-06-02
        相关资源
        最近更新 更多