Ответ 1
Используйте MySQL5InnoDBDialect
вместо MySQLInnoDBDialect
.
При попытке воссоздать мою базу данных с помощью Hibernate + Spring, SQL, который генерируется, добавляет "type=InnoDB"
в конец каждого оператора создания. Это, похоже, вызывает проблемы с моей настройкой MySQL5.5.9. Он вызывает следующую ошибку:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "type = InnoDB" в строке 1
Если я вручную удалю тип = InnoBD и вставлю команду create в MySQL, он отлично работает.
Кто-нибудь еще сталкивается с этой ошибкой? Возможно, это просто настройка MySQL, которую мне нужно изменить? Я использую шаблон my-innodb-heavy-4G.cnf
как мой /etc/my.cnf
.
Я также знаю, что синтаксис type
устарел MySQL, и что нужно использовать engine
(и это произойдет, если я вручную изменю инструкции create). Есть ли способ настроить это в Hibernate?
Спасибо
Используйте MySQL5InnoDBDialect
вместо MySQLInnoDBDialect
.
Использование 'MySQL5InnoDBDialect' работает с 5.1 и 5.5.
В Grails:
Измените оператор диалекта в DataSource.groovy
Пример:
Используйте "dialect = org.hibernate.dialect.MySQL5InnoDBDialect" вместо "dialect = org.hibernate.dialect.MySQLInnoDBDialect"
Вы можете использовать тот же подход для своего проекта, я думаю.
Спасибо
На всякий случай, если вы изменили на org.hibernate.dialect.MySQL5InnoDBDialect (например, на MariaDB) и все еще получаете ошибку, проверьте, не является ли имя таблицы (или любое другое в запросе) не зарезервированным словом или именем существующего объекта (например, "позиция" ).
После добавления MySQL5InnoDBDialect я получил ту же ошибку, но с "Engine = InnoDB". Поэтому я добавил MySQL5InnoDBDialect в файл свойств и удалил аннотации @Table из файла модели.
type
устарел и удален из новейших версий. Используйте engine=InnoDB
Нет meu caso, instalei o MySQL v5.6.20, e ao rodar minha aplicação que usa Hibernate, teve colocar MySQL5InnoDBDialect.
Segue o trecho (persistence.xml) Свойства тега da:
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="****" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>