Hibernate によって生成された DDL での無効な構文エラー "type= MyISAM"
基礎となるデータベースとして MySQL を使用して Hibernate でテーブルを作成する場合、 「SQL 構文にエラーがあります。MariaDB サーバーのバージョンに対応するマニュアルを確認してください」というエラーが発生する場合があります。行 1 の「type = MyISAM」付近で使用する正しい構文については、「
原因:
このエラーは通常、テーブルの生成に MySQLDialect 方言が使用されているために発生します」この定義は、使用している MySQL または MariaDB のバージョンに適していません。 Hibernate バージョン 5.x 以前では、MySQLDialect は MySQL 4.x 以前用に設計されており、「type = MyISAM」構文が含まれていました。ただし、MySQL 5.5 以降では、この構文は非推奨になっているため、「ENGINE = MyISAM」に置き換える必要があります。
解決策:
このエラーを解決するには、次のようにします。 Hibernate で使用される方言をデータベースと互換性のあるものに更新する必要がありますversion:
Configuration:
提供された設定ファイルでは、org.hibernate.dialect.MySQLDialect を使用していますが、これは MySQL 5.5 には適切ではありません。またはそれ以降。上記の互換性のある方言のいずれかを使用するには、構成を更新する必要があります。例:
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
Hibernate 6 の注意:
Hibernate 6 では、方言は実際に接続されているバージョンに基づいて自動的に設定されます。したがって、Hibernate 6 を使用している場合は、MySQLDialect または MariaDBDialect の使用に戻す必要があります。
以上がHibernate が MySQL/MariaDB で無効な「type=MyISAM」構文を生成するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。