2017-03-15 11 views
1

問題があります - 「行サイズが大きすぎます(> 8126)」 Hibernateを使用してデータベーステーブルを作成しようとするとエラーが発生します(これを行うには、「作成」でhibernate.hbm2ddl.autoプロパティを使用しています)。行サイズが大きすぎる(> 8126)休止状態

問題は、VARCHARではなくTEXTであると思われるいくつかの列があることです。どうやら、これらの列の行が大きすぎるため、上記のエラーが発生します。

私がHibernateを設定した方法は、マッピングファイルを使用しています。私はそれが私の問題を解決することを期待して65535までの長さを設定し、それがない

<property name="transmission_current_range" type="java.lang.String" length="65535"> 
     <column name="TRANSMISSION_CURRENT_RANGE"/> 
</property> 

注意:ここで

は、マッピングされた特性の一つは、どのように見えるかです。

Hibernateに、この列をVARCHARではなくTEXTにする方法を教えてください。私は、アノテーションを使った例を見てきましたが、マッピングファイルを使って同じことをしたいのです。

また、TEXTに対応するJavaタイプは何ですか?私はこれを探しましたが、VARCHARとTEXTの両方で使用されているのと同じデータ型のjava.lang.Stringしか見つかりませんでした。

EDIT:どうやら、私が代わりに文字列「の「TEXT」にデータを変更する必要があるため、この問題はありませんが、私は、各ライン(行)8126.

の制限を超えるので、多くの列を持っているので、

このエラーが発生しました:

"行サイズが大きすぎます。 BLOBを数えずに、使用されているテーブル・タイプの最大行サイズは8126です。これにはストレージ・オーバーヘッドが含まれており、マニュアルを確認してください。一部の列をTEXTまたはBLOBに変更する必要があります "

EDIT2:明らかに、このエラーの原因は、行の長さが大きすぎるという事実です。 TEXTの代わりに、それ自体がVARCHAR が、その代わりに、私は単純に、列の長さの点では、あまりにも多くの「データ」を持っている。

innodb_strict_mode = 0を変更するMySQLのcfgファイルでは問題は解決したが、私は、Hibernateは、データベースを作成してみましょうするとき作成された列は元のデータ型ではなくBLOB型でした(そのうちのいくつかは元のデータ型に維持されていました)

これは、私のソリューションを選ぶ誰かのためのヘッドアップです。使用text代わりのjava.lang.String

答えて

0

[OK]をクリックして問題を解決しました。

innodb_strict_mode = 0 

それだ:ソリューションは、[mysqldを]カテゴリで、「/etc/mysql/my.cnf」ファイルに挿入この行でした。今私はすべての列を挿入することができ、私はもうエラーを取得しません。

0

<property name="transmission_current_range" 
    type="text" length="65535"> 
     <column name="TRANSMISSION_CURRENT_RANGE"/> 
</property> 
+0

以前の「java」をすべて変更しました。lang.String "型を正確に上記のものに置き換えてもエラーは発生します。 生成される列の型がlongtextですが、同じエラーが発生します –

+1

これは良いことです。 DBエンジンにはより多くの設定が必要です(MySQLの場合など):http://stackoverflow.com/q/15585602/248082 – nobeh

+0

これはInnoDB用のものですか?私はMySQLを使用しています。 –

0

Hibernateのドキュメントは<column>要素のsql-type言及しています。試してみることができます:

<column name="TRANSMISSION_CURRENT_RANGE" sql-type="text"/> 
+0

あなたのアドバイスをも試してみましたが、私は同じエラーが発生します。これは意味をなさない。また、Hibernateの提案はあまりにも漠然としています: "行サイズが大きすぎる(> 8126)。いくつかの列をTEXTまたはBLOBに変更すると役立つかもしれません。 どの列が機能しないのかは分かりません。 –