MySQL 5.5.9 和 TYPE 上的 Hibernate 表创建错误
Posted
技术标签:
【中文标题】MySQL 5.5.9 和 TYPE 上的 Hibernate 表创建错误【英文标题】:MySQL 5.5.9 and Hibernate table creation error on TYPE 【发布时间】:2011-07-11 00:29:25 【问题描述】:在尝试使用 Hibernate + Spring 重新创建我的数据库时,生成的 SQL 将 "type=InnoDB"
附加到每个创建语句的末尾。这似乎会导致我的 mysql5.5.9 设置出现问题。它会产生以下错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“type=InnoDB”附近使用正确的语法
如果我手动删除 type=InnoBD 并将 create 命令粘贴到 MySQL 中,它可以正常工作。
有没有其他人遇到过这个错误?是否可能只是我需要更改的 MySQL 设置?我使用my-innodb-heavy-4G.cnf
模板作为我的/etc/my.cnf
。
我也知道 type
语法已被 MySQL 弃用,应该使用 engine
(如果我手动更改 create 语句,它会这样做)。有什么方法可以在 Hibernate 中进行配置吗?
谢谢
【问题讨论】:
【参考方案1】:使用MySQL5InnoDBDialect
代替MySQLInnoDBDialect
。
【讨论】:
有用的答案,但 MySQLInnoDBDialect 有什么问题。 @yogeshprajapatiMySQLInnoDBDialect
适用于 MySQL 4.x【参考方案2】:
使用“MySQL5InnoDBDialect”适用于 5.1 和 5.5。
【讨论】:
【参考方案3】:在 Grails 中:
更改DataSource.groovy中的方言语句
例子:
使用“dialect=org.hibernate.dialect.MySQL5InnoDBDialect”代替“dialect=org.hibernate.dialect.MySQLInnoDBDialect”
我猜您可以对您的项目使用相同的方法。
谢谢
【讨论】:
【参考方案4】:以防万一您已更改为 org.hibernate.dialect.MySQL5InnoDBDialect(例如在 MariaDB 上)并且仍然收到错误,请检查表名(或查询中的任何其他)是否不是保留字或现有对象名(例如“位置”)。
【讨论】:
【参考方案5】:添加 MySQL5InnoDBDialect 后,我遇到了同样的错误,但出现了“Engine=InnoDB”。所以我在属性文件中添加了 MySQL5InnoDBDialect 并从模型文件中删除了@Table 注释。
【讨论】:
【参考方案6】:type
已弃用,并已从最新版本中删除。使用engine=InnoDB
【讨论】:
【参考方案7】:没有 meu caso,instalei o MySQL v5.6.20,e ao rodar minha aplicação que usa 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>
【讨论】:
这不是 *** 的葡萄牙语版本。以上是关于MySQL 5.5.9 和 TYPE 上的 Hibernate 表创建错误的主要内容,如果未能解决你的问题,请参考以下文章
Java 11:OSGi:生成 EntityManager,无法构建 Hibernate SessionFactory java.lang.ClassNotFoundException:org.hib