Подтвердить что ты не робот

Ошибка создания MySQL 5.5.9 и Hibernate в TYPE

При попытке воссоздать мою базу данных с помощью 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?

Спасибо

4b9b3361

Ответ 1

Используйте MySQL5InnoDBDialect вместо MySQLInnoDBDialect.

Ответ 2

Использование 'MySQL5InnoDBDialect' работает с 5.1 и 5.5.

Ответ 3

В Grails:

Измените оператор диалекта в DataSource.groovy

Пример:

Используйте "dialect = org.hibernate.dialect.MySQL5InnoDBDialect" вместо "dialect = org.hibernate.dialect.MySQLInnoDBDialect"

Вы можете использовать тот же подход для своего проекта, я думаю.

Спасибо

Ответ 4

На всякий случай, если вы изменили на org.hibernate.dialect.MySQL5InnoDBDialect (например, на MariaDB) и все еще получаете ошибку, проверьте, не является ли имя таблицы (или любое другое в запросе) не зарезервированным словом или именем существующего объекта (например, "позиция" ).

Ответ 5

После добавления MySQL5InnoDBDialect я получил ту же ошибку, но с "Engine = InnoDB". Поэтому я добавил MySQL5InnoDBDialect в файл свойств и удалил аннотации @Table из файла модели.

Ответ 6

type устарел и удален из новейших версий. Используйте engine=InnoDB

Ответ 7

Нет 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>