繁体   English   中英

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

[英]MySQL 5.5.9 and Hibernate table creation error on TYPE

在尝试使用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标签属性:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM