MySQL 5.5.9 и ошибка создания таблицы Hibernate на TYPE - PullRequest
28 голосов
/ 08 марта 2011

При попытке воссоздать мою базу данных, используя Hibernate + Spring, сгенерированный SQL-запрос добавляет "type=InnoDB" в конец каждого оператора создания. Кажется, это вызывает проблемы с моей установкой MySQL5.5.9. Выдает следующую ошибку:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с 'type = InnoDB' в строке 1

Если я вручную удаляю type = InnoBD и вставляю команду создания в MySQL, она работает нормально.

Кто-то еще сталкивался с этой ошибкой? Может быть, мне просто нужно изменить настройку MySQL? Я использую шаблон my-innodb-heavy-4G.cnf в качестве /etc/my.cnf.

Я также знаю, что синтаксис type устарел в MySQL, и что следует использовать engine (и это происходит, если я вручную изменяю операторы создания). Есть ли способ настроить это в Hibernate?

Спасибо

Ответы [ 7 ]

69 голосов
/ 08 марта 2011

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

5 голосов
/ 09 сентября 2011

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

1 голос
/ 27 ноября 2015

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

1 голос
/ 30 июля 2013

В Граале:

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

Пример:

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

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

Спасибо

0 голосов
/ 11 августа 2014

No 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):

<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>
0 голосов
/ 08 июля 2013

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

0 голосов
/ 22 января 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...