MyISAM方言生成错误的DDL

时间:2011-12-29 09:54:46

标签: mysql hibernate jpa-2.0 myisam

我们使用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及更低版本中运行良好。我应该使用什么样的hibernate提供程序来解决这个问题。

1 个答案:

答案 0 :(得分:3)

它破了,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不太合适。