MySQL 5.5.9和TYPE上的Hibernate表创建错误

在尝试使用Hibernate + Spring重新创建数据库时,生成的SQL会在每个创建语句的末尾添加"type=InnoDB" 。 这似乎导致我的MySQL5.5.9设置出现问题。 它会产生以下错误:

您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在第1行的’type = InnoDB’附近使用正确的语法

如果我手动删除type = InnoBD并在MySQL中粘贴create命令,它可以正常工作。

有其他人遇到此错误? 它可能只是我需要更改的MySQL设置吗? 我使用my-innodb-heavy-4G.cnf模板作为我的/etc/my.cnf

我也知道MySQL不推荐使用type语法,并且应该使用该engine (如果我手动更改create语句,则会使用该engine )。 有没有办法在Hibernate中配置它?

谢谢

使用MySQL5InnoDBDialect而不是MySQLInnoDBDialect

使用’MySQL5InnoDBDialect’适用于5.1和5.5。

在Grails中:

在DataSource.groovy中更改dialect语句

例:

使用“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 rodarminhaaplicaçãoqueusa Hibernate,teve colocar MySQL5InnoDBDialect

Segue o trecho(persistence.xml)da标签属性: