mysql myisam
对于开发人员而言,没有什么比Hibernate和JPA中SQLException更糟糕了。 没有什么比在任何持久性代码运行之前发生SQLException时更令人讨厌的了。 但是,当您要求JPA框架为您构建数据库时,如果开发人员看到“ type = MyISAM” SQLSyntaxErrorException,这就是发生的情况。 整个MySQL数据库创建脚本甚至在启动之前就已精疲力尽。
在这种情况下,主要问题是与MySQL安装不兼容的旧方言类。 开发人员可以通过方言更新来解决“ type = MyISAM” SQLSyntaxErrorException问题。 如果开发人员具有对MySQLDialect的引用,并且MySQL数据库比版本5更高,则会发生此SQLSyntaxErrorException问题。
使用MySQL8Dialect更新persistence.xml
如果开发人员使用persistence.xml文件 ,则将方言设置为属性之一:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" >
<persistence-unit name="jpa-tutorial">
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost/hibernate_examples"/>
<property name=" hibernate.dialect "
value=" org.hibernate.dialect.MySQL8Dialect " />
<property name = "javax.persistence.schema-generation.database.action" value = "drop-and-create" />
</properties>
</persistence-unit>
</persistence>
如果更新persistence.xml文件并使用正确的MySQL方言进行安装,该错误将消失。
MySQL方言和JDBC代码
如果开发人员使用Hibernate SchemaExport类,甚至只是编写MySQL JDBC代码 ,他们将需要深入研究Java代码以正确更新方言:
Map<String, String> settings = new HashMap<>();
settings.put("connection.driver_class",
"com.mysql.jdbc.Driver"); settings.put("dialect",
"org.hibernate.dialect.MySQL8Dialect");
settings.put("hibernate.connection.url",
"jdbc:mysql://localhost/hibernate_examples");
Hibernate MySQLDialect类
在Hibernate 5.4版本发行版中,开发人员可以从以下MySQL方言列表中进行选择:
- MySQL55方言
- MySQL57方言
- MySQL57InnoDBDialect
- MySQL5方言
- MySQL8方言
- MySQL语言
- MySQLInnoDBDialect
- MySQLISAMDialect
为您的数据库选择正确的方言, MySQL'type = MyISAM'SQLSyntaxErrorException将会永久消失。
mysql myisam