ホームページ > データベース > mysql チュートリアル > MySQL で行サイズが大きすぎると報告される理由と解決策 65535_MySQL

MySQL で行サイズが大きすぎると報告される理由と解決策 65535_MySQL

WBOY
リリース: 2016-07-06 13:32:49
オリジナル
2074 人が閲覧しました

エラー メッセージ: 行サイズが大きすぎます。BLOB を除いた、使用されているテーブル タイプの最大行サイズは 65535 です

MySQL テーブルにフィールド タイプをテキストに追加するか、フィールド タイプをテキストに変更すると、上記のエラーが報告されます。実はこのエラーの原因についてはよくわかっていませんが、私が見つけた説明をいくつかさせていただきます

一般的な考え方は、データ テーブルに 64K に設定されたフィールド インデックスがあるということです。テーブル内のフィールド (フィールド名か何かかはわかりません) がこの長さを超えることができない場合、65,535 はそれを示します。テーブル全体の非大きなフィールド タイプであること。フィールドの合計バイト数。 (インターネットで見つけました)

私自身の理解(あまり明確ではないので、ご指摘ください):

私の理解は最後の文で見つけたものと似ています。つまり、非ラージ フィールド タイプのフィールドの合計バイト数は 64K を超えています。このフィールドの合計バイト数は何ですか?これはフィールド名の長さの合計と考えた方がよいでしょう。大きくないフィールドは、それらの名前の合計が 64K を超える場合、エラーが報告されます。

varchar について簡単に説明します。古いバージョン 5 より前では、varchar が保存できる最大文字数は 255 文字でした。バージョン 5 以降では、varchar は可変長になります。たとえば、varchar 型に 50 個のデータがある場合、その数を記録するために 1 つのプレースホルダーが使用されると、占有されるストレージ領域は 51 個になります。文字が格納されます。 (おそらく、フィールド名が 64k を占めているのではなく、このフィールドのレコード長が長すぎて 64k の値を超えている可能性があります。) 言い換えれば、データ テーブルで varchar フィールド タイプも使用されているかどうかを自分で確認できます。多すぎる。

確かに varchar が多用されていますが、どうすればよいでしょうか? 実際、上記のエラー ステートメントでは、属性をテキストまたは BLOB に変換できると説明しています。それが機能する場合は、自分で試してみることができます。

データテーブルにこれほど多くのvarcharがあるのはなぜでしょうか? これは実際の長さであり、たとえば、varchar(300)と指定しても、実際にはこのフィールドに10ワードしか格納されません。 11 文字の保存スペースを追加し、最大 300 文字まで追加できます。

私の解決策:

Nが255未満のテーブルのvarchar(N)の属性フィールドを設定し、属性をtinytextに変更します。 tinytext は、保存時に常に 255 文字を占めます。固定職業となっており、保存できるキャラクター数は最大255文字までとなっている。したがって、varchar(N) の N 値が特に小さい場合は、代わりに tinytext を使用できます。 charを使用できるかどうかを検討してください。

上記は、編集者によって紹介された Mysql レポートの行サイズが大きすぎる 65535 の理由と解決策です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。 。ウェブサイトをご利用いただき、誠にありがとうございます。

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