在尝试使用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语句,它就会这样做)。有没有办法在Hibernate中配置它?
由于
答案 0 :(得分:69)
使用MySQL5InnoDBDialect
代替MySQLInnoDBDialect
。
答案 1 :(得分:5)
使用'MySQL5InnoDBDialect'适用于5.1和5.5。
答案 2 :(得分:1)
在Grails:
更改DataSource.groovy中的dialect语句
示例:
使用“dialect = org.hibernate.dialect.MySQL5InnoDBDialect”代替“dialect = org.hibernate.dialect.MySQLInnoDBDialect”
我猜你可以为你的项目使用相同的方法。
由于
答案 3 :(得分:1)
以防万一你已经更改为org.hibernate.dialect.MySQL5InnoDBDialect(例如在MariaDB上)并仍然得到错误检查表名(或查询中的任何其他名称)是否不是保留字或现有对象名(例如' position')。
答案 4 :(得分:0)
添加MySQL5InnoDBDialect后,我得到了相同的错误,但是“Engine = InnoDB”。所以我在属性文件中添加了MySQL5InnoDBDialect,并从模型文件中删除了@Table注释。
答案 5 :(得分:0)
type
已弃用,已从最新版本中删除。使用engine=InnoDB
答案 6 :(得分:-1)
没有meu caso,instalei o MySQL v5.6.20,e ao rodarminhaaplicaçãobususa 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>