Hibernate 生成的 DDL 中出现无效语法错误“type= MyISAM”
问题:
尝试使用Hibernate在MySQL中创建表时,遇到以下情况error:
Caused by :`com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException`: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB` server version for the right syntax to use near 'type = `MyISAM`' at line 1
此错误发生在 Hibernate 生成的查询中:
Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM
我搜索过类似的错误,但发现用户通常在手动传递查询时遇到此问题。在这里,Hibernate 正在生成表创建查询。在哪里可以找到错误以及如何解决它?
答案:
出现此错误是因为您的配置中使用的方言已过时。在 Hibernate 5.x 及更早版本中,org.hibernate.dialect.MySQLDialect 用于 MySQL 4.x 或更早版本。此方言生成的“TYPE=MYISAM”片段在 MySQL 4.0 中已弃用,并在 5.5 中删除。
要解决此问题,您需要更新 Hibernate 配置中的方言。如果您使用 MariaDB,根据其版本和 Hibernate 版本,您可以使用以下之一方言:
如果您使用 MySQL 或您的 Hibernate 版本中不存在上述 MariaDB 方言,您可以使用以下其中一种方言:
注意:在 Hibernate 6 中,您可以再次使用 MySQLDialect 或 MariaDBDialect,因为 Hibernate 6 方言会根据连接的版本进行自我配置。
以上是为什么 Hibernate 在创建 MySQL 表时会生成'type=MyISAM”的'无效语法错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!