Maison > base de données > tutoriel mysql > Pourquoi Hibernate génère-t-il une « erreur de syntaxe invalide » avec « type=MyISAM » lors de la création d'une table MySQL ?

Pourquoi Hibernate génère-t-il une « erreur de syntaxe invalide » avec « type=MyISAM » lors de la création d'une table MySQL ?

DDD
Libérer: 2024-12-04 18:59:12
original
261 Les gens l'ont consulté

Why does Hibernate generate an

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
Copier après la connexion

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
Copier après la connexion

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 :

  • org.hibernate.dialect.MariaDBDialect
  • org.hibernate. dialect.MariaDB53Dialect
  • org.hibernate.dialect.MariaDB106Dialect (ou supérieur)

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 :

  • org.hibernate.dialect.MySQL5Dialect
  • org.hibernate.dialect.MySQL55Dialect
  • org.hibernat e.dialect.MySQL57Dialect
  • org.hibernate.dialect.MySQL8Dialect
  • org.hibernate.dialect.MySQL57InnoDBDialect (ou variantes)

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal