Диалект MyISAM генерирует неправильный DDL

Мы используем диалект MyISAM org.hibernate.dialect.MySQLMyISAMDialect для автоматического создания файлов DDL на основе JPA2 с использованием 3.6.9.Final провайдера hibernate в базе данных MySQL 5.5.

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 и более ранних. Какой провайдер гибернации я должен использовать, чтобы исправить это.


person priya    schedule 29.12.2011    source источник


Ответы (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.

person Mikko Maunu    schedule 29.12.2011
comment
Это могло бы быть очень простым решением для спящего режима, не знаю, почему они не могут приспособить это изменение. - person priya; 30.12.2011