【问题标题】:MyISAM dialect generates wrong DDLMyISAM 方言生成错误的 DDL
【发布时间】:2012-01-29 18:39:40
【问题描述】:

我们使用 MyISAM 方言 org.hibernate.dialect.MySQLMyISAMDialect 在 MySQL 5.5 数据库上使用 3.6.9.Final hibernate 提供程序自动生成基于 JPA2 的 DDL 文件。

The create SQL file gets generated as 
CREATE TABLE t (i INT) type = MYISAM;
instead of
CREATE TABLE t (i INT) ENGINE = MYISAM;

导致创建表失败。

注意:这在 5.1 和更低版本中运行良好。我应该使用什么休眠提供程序来解决这个问题。

【问题讨论】:

    标签: mysql hibernate jpa-2.0 myisam


    【解决方案1】:

    它坏了,MySQL 很久以前就放弃了对已弃用的“type=”的支持。在 MyISAM 的情况下,Hibernate 没有包含任何工作实现。对于 InnoDB 有单独的实现(MySQL5InnoDBDialect)。

    您必须自己实现它,或者只选择现有的实现,例如:http://code.google.com/p/snofyre/source/browse/trunk/snomed-osgi/uk.nhs.cfh.dsp.snomed.persistence/src/main/java/uk/nhs/cfh/dsp/snomed/persistence/orm/MySQL5MyISAMDialect.java

    我猜你不适合使用 InnoDB?尤其是由于缺少事务,MyISAM 不能很好地与 JPA 配合使用。

    【讨论】:

    • 这对于休眠来说可能是一个非常简单的修复,但不知道为什么他们不能适应这种变化。
    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2010-10-26
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多