Ungültiger Syntaxfehler „type= MyISAM“ in DDL, generiert durch Hibernate
Frage:
Beim Versuch, mit Hibernate eine Tabelle in MySQL zu erstellen, bin ich auf Folgendes gestoßen Fehler:
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
Dieser Fehler tritt in der von Hibernate generierten Abfrage auf:
Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM
Ich habe nach ähnlichen Fehlern gesucht, aber festgestellt, dass Benutzer normalerweise auf dieses Problem stoßen, wenn sie die Abfrage manuell übergeben . Hier generiert Hibernate die Abfrage zur Tabellenerstellung. Wo finde ich den Fehler und wie kann ich ihn beheben?
Antwort:
Dieser Fehler tritt auf, weil der in Ihrer Konfiguration verwendete Dialekt veraltet ist. In Hibernate 5.x und früher wurde org.hibernate.dialect.MySQLDialect für MySQL 4.x oder früher verwendet. Das von diesem Dialekt generierte „TYPE=MYISAM“-Fragment war in MySQL 4.0 veraltet und wurde in 5.5 entfernt.
Um dieses Problem zu beheben, müssen Sie den Dialekt in Ihrer Hibernate-Konfiguration aktualisieren. Wenn Sie MariaDB verwenden, können Sie je nach Version und Hibernate-Version einen der folgenden Dialekte verwenden:
Wenn Sie MySQL verwenden oder die oben genannten MariaDB-Dialekte in Ihrer Hibernate-Version nicht vorhanden sind, können Sie einen der folgenden verwenden Dialekte:
Hinweis: In Hibernate 6 können Sie MySQLDialect oder MariaDBDialect erneut verwenden, da sich die Dialekte von Hibernate 6 basierend auf der verbundenen Version selbst konfigurieren.
Das obige ist der detaillierte Inhalt vonWarum generiert Hibernate beim Erstellen einer MySQL-Tabelle einen „Ungültigen Syntaxfehler' mit „type=MyISAM'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!