Heim  >  Artikel  >  Datenbank  >  Warum generiert Hibernate eine ungültige „type=MyISAM'-Syntax in MySQL/MariaDB und wie kann ich das beheben?

Warum generiert Hibernate eine ungültige „type=MyISAM'-Syntax in MySQL/MariaDB und wie kann ich das beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-22 08:37:11131Durchsuche

Why Does Hibernate Generate Invalid

Ungültiger Syntaxfehler „type= MyISAM“ in der von Hibernate generierten DDL

Beim Erstellen einer Tabelle in Hibernate mit MySQL als zugrunde liegende Datenbank, Möglicherweise wird eine Fehlermeldung angezeigt, die besagt: „Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, um die richtige Syntax für die Verwendung in der Nähe des Typs zu finden.“ = MyISAM' in Zeile 1."

Ursache:

Dieser Fehler tritt normalerweise auf, weil der zum Generieren der Tabellendefinition verwendete MySQLDialect-Dialekt nicht für die Version von MySQL geeignet ist oder MariaDB, die Sie verwenden. In Hibernate-Versionen 5.x und früher ist MySQLDialect für MySQL 4.x oder früher konzipiert, das die Syntax „type = MyISAM“ enthielt. In MySQL 5.5 und höher ist diese Syntax jedoch veraltet und muss durch „ENGINE = MyISAM“ ersetzt werden.

Lösung:

Um diesen Fehler zu beheben, müssen Sie sollte den von Hibernate verwendeten Dialekt auf einen aktualisieren, der mit Ihrer Datenbankversion kompatibel ist:

  • Für MySQL 5.5 und Verwenden Sie später einen Dialekt wie MySQL5Dialect, MySQL55Dialect oder MySQL8Dialect.
  • Verwenden Sie für MariaDB einen Dialekt wie MariaDBDialect oder MariaDB53Dialect (abhängig von der Version von MariaDB).

Konfiguration:

In der bereitgestellten Konfigurationsdatei verwenden Sie org.hibernate.dialect.MySQLDialect, das nicht für MySQL 5.5 oder höher geeignet ist. Sie müssen die Konfiguration aktualisieren, um einen der oben genannten kompatiblen Dialekte zu verwenden. Zum Beispiel:

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

Hinweis für Hibernate 6:

In Hibernate 6 konfigurieren sich die Dialekte selbst basierend auf der tatsächlich verbundenen Version. Wenn Sie Hibernate 6 verwenden, sollten Sie daher wieder MySQLDialect oder MariaDBDialect verwenden.

Das obige ist der detaillierte Inhalt vonWarum generiert Hibernate eine ungültige „type=MyISAM'-Syntax in MySQL/MariaDB und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn