ホームページ > データベース > mysql チュートリアル > Hibernate が MySQL/MariaDB で無効な「type=MyISAM」構文を生成するのはなぜですか? それを修正するにはどうすればよいですか?

Hibernate が MySQL/MariaDB で無効な「type=MyISAM」構文を生成するのはなぜですか? それを修正するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-22 08:37:11
オリジナル
196 人が閲覧しました

Why Does Hibernate Generate Invalid

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:

  • MySQL 5.5 以降の場合は、MySQL5Dialect、MySQL55Dialect、または MySQL8Dialect などの方言を使用します。
  • MariaDB の場合は、MariaDBDialect または MariaDB53Dialect などの方言を使用します (バージョンに応じて異なります)。のバージョンMariaDB).

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート