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

时间:2011-03-08 10:39:35

标签: java mysql hibernate spring

在尝试使用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中配置它?

由于

7 个答案:

答案 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>