1. ホーム
  2. mysql

[解決済み] MySQLの エラーコード。1118 行のサイズが大きすぎます (> 8126)。いくつかのカラムをTEXTまたはBLOBに変更する。

2023-03-03 09:01:18

質問

のテーブルを作りたいのですが 325 カラムのテーブルを作りたい。

CREATE TABLE NAMESCHEMA.NAMETABLE 
(   
      ROW_ID TEXT NOT NULL ,        //this is the primary key

324 column of these types:
      CHAR(1), 
      DATE, 
      DECIMAL(10,0), 
      DECIMAL(10,7), 
      TEXT, 
      LONG,

) ROW_FORMAT=COMPRESSED;

VARCHARをすべてTEXTに置き換えて、その上に バラクーダ をMySQLのmy.iniファイルに追加すると、このような属性が追加されます。

innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_file_format_check = ON

を実行しても、このエラーが発生します。

Error Code: 1118
 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

EDIT: レガシーアプリケーション/システム/データベースのため、データベースの構造を変更することができません。新しいテーブルの作成は、レガシーデータベースのエクスポートです。

EDIT2: 私はこの質問を書きました。それは他の人と似ていますが、内部には私がインターネットで見つけたVARCHARやBarracudaのようないくつかのソリューションがありますが、私はまだその問題を抱えているので、私は誰かが他の答えを持っているかどうかを見るために、すでに古典的な答えを内部に持つ新しい質問を開くことを決定しました。

どのように解決するのですか?

最近、MySQL Server 5.6.20 の変更により、同じエラー コードと格闘していました。 私は、my.ini テキスト ファイルの innodb_log_file_size を変更することでこの問題を解決することができました。

リリース ノートでは、小さすぎる innodb_log_file_size は "Row size too large error." をトリガーすることが説明されています。

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-20.html