ホームページ > データベース > mysql チュートリアル > MySQL テーブルの作成時に、Hibernate が「type=MyISAM」で「無効な構文エラー」を生成するのはなぜですか?

MySQL テーブルの作成時に、Hibernate が「type=MyISAM」で「無効な構文エラー」を生成するのはなぜですか?

DDD
リリース: 2024-12-04 18:59:12
オリジナル
266 人が閲覧しました

Why does Hibernate generate an

Hibernate によって生成された DDL での無効な構文エラー "type= MyISAM"

質問:

Hibernate を使用して MySQL にテーブルを作成しようとすると、次のような問題が発生しました。エラー:

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
ログイン後にコピー

このエラーは Hibernate によって生成されたクエリで発生します:

Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM
ログイン後にコピー

同様のエラーを検索しましたが、通常、ユーザーがクエリを手動で渡すときにこの問題が発生することがわかりました。ここでは、Hibernate がテーブル作成クエリを生成しています。間違いはどこで見つけられ、どうすれば解決できますか?

回答:

このエラーは、構成で使用されている方言が古いために発生します。 Hibernate 5.x 以前では、MySQL 4.x 以前に org.hibernate.dialect.MySQLDialect が使用されていました。この方言によって生成される「TYPE=MYISAM」フラグメントは、MySQL 4.0 で非推奨となり、5.5 で削除されました。

この問題を解決するには、Hibernate 設定で方言を更新する必要があります。 MariaDB を使用している場合は、そのバージョンと Hibernate バージョンに応じて、次のいずれかを使用できます。方言:

  • org.hibernate.dialect.MariaDBDialect
  • org.hibernate.dialect.MariaDB53Dialect
  • org.hibernate.dialect.MariaDB106Dialect (または上位)

MySQL を使用している場合、または上記の MariaDB ダイアレクトが Hibernate バージョンに存在しない場合は、次のいずれかを使用できます。方言:

  • org.hibernate.dialect.MySQL5Dialect
  • org.hibernate.dialect.MySQL55Dialect
  • org.hibernat e.dialect.MySQL57Dialect
  • org.hibernate.dialect.MySQL8Dialect
  • org.hibernate.dialect.MySQL57InnoDBDialect (またはバリアント)

注: Hibernate 6 では、接続されたバージョンに基づいて Hibernate 6 ダイアレクトが自己構成されるため、MySQLDialect または MariaDBDialect を再度使用できます。

以上がMySQL テーブルの作成時に、Hibernate が「type=MyISAM」で「無効な構文エラー」を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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