Erreur de syntaxe non valide "type= MyISAM" dans le DDL généré par Hibernate
Question :
Lorsque j'ai tenté de créer une table dans MySQL à l'aide d'Hibernate, j'ai rencontré le problème suivant erreur :
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
Cette erreur se produit dans la requête générée par Hibernate :
Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM
J'ai recherché des erreurs similaires, mais j'ai constaté que les utilisateurs rencontrent généralement ce problème lorsqu'ils transmettent la requête manuellement . Ici, Hibernate génère la requête de création de table. Où puis-je trouver l'erreur et comment puis-je la résoudre ?
Réponse :
Cette erreur se produit car le dialecte utilisé dans votre configuration est obsolète. Dans Hibernate 5.x et versions antérieures, org.hibernate.dialect.MySQLDialect était utilisé pour MySQL 4.x ou versions antérieures. Le fragment "TYPE=MYISAM" généré par ce dialecte est obsolète dans MySQL 4.0 et supprimé dans la version 5.5.
Pour résoudre ce problème, vous devez mettre à jour le dialecte dans votre configuration Hibernate. Si vous utilisez MariaDB, selon sa version et la version Hibernate, vous pouvez utiliser l'un des dialectes suivants :
Si vous utilisez MySQL ou si les dialectes MariaDB mentionnés ci-dessus n'existent pas dans votre version Hibernate, vous pouvez utiliser l'un des éléments suivants dialectes :
Remarque : Dans Hibernate 6, vous pouvez à nouveau utiliser MySQLDialect ou MariaDBDialect, car les dialectes d'Hibernate 6 s'auto-configurent en fonction de la version connectée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!