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 :
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>
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!