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标签属性: