Maison > base de données > tutoriel mysql > Pourquoi Hibernate génère-t-il une syntaxe « type=MyISAM » invalide dans MySQL/MariaDB et comment puis-je y remédier ?

Pourquoi Hibernate génère-t-il une syntaxe « type=MyISAM » invalide dans MySQL/MariaDB et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-11-22 08:37:11
original
204 Les gens l'ont consulté

Why Does Hibernate Generate Invalid

Erreur de syntaxe invalide "type= MyISAM" dans le DDL généré par Hibernate

Lors de la création d'une table dans Hibernate en utilisant MySQL comme base de données sous-jacente, vous pouvez rencontrer une erreur indiquant "Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour connaître la bonne syntaxe à utiliser près de 'type = MyISAM' à la ligne 1."

Cause :

Cette erreur se produit généralement car le dialecte MySQLDialect utilisé pour générer la définition de table n'est pas adapté à la version de MySQL ou MariaDB que vous utilisez. Dans les versions 5.x et antérieures d'Hibernate, MySQLDialect est conçu pour MySQL 4.x ou antérieur, qui incluait la syntaxe "type = MyISAM". Cependant, dans MySQL 5.5 et versions ultérieures, cette syntaxe est obsolète et doit être remplacée par "ENGINE = MyISAM."

Solution :

Pour résoudre cette erreur, vous doit mettre à jour le dialecte utilisé par Hibernate vers un dialecte compatible avec la version de votre base de données :

  • Pour MySQL 5.5 et versions ultérieures, utilisez un dialecte tel que MySQL5Dialect, MySQL55Dialect ou MySQL8Dialect.
  • Pour MariaDB, utilisez un dialecte tel que MariaDBDialect ou MariaDB53Dialect (selon la version de MariaDB).

Configuration :

Dans le fichier de configuration fourni, vous utilisez org.hibernate.dialect.MySQLDialect, qui n'est pas approprié pour MySQL 5.5 ou version ultérieure. Vous devez mettre à jour la configuration pour utiliser l'un des dialectes compatibles mentionnés ci-dessus. Par exemple :

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
Copier après la connexion

Remarque pour Hibernate 6 :

Dans Hibernate 6, les dialectes se configureront eux-mêmes en fonction de la version réellement connectée. Par conséquent, si vous utilisez Hibernate 6, vous devez revenir à MySQLDialect ou MariaDBDialect.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal