2012-03-22 4 views
0

カテゴリにフィールドを追加することに基づいて動的クエリを実行しています。 は、ここに例のクエリです:このALTER TABLE MYSQLクエリが実行されない(falseを返す)のはなぜですか?構文が正しく表示されます

ALTER TABLE se_classifiedvalues 
    ADD classifiedvalue_402 varchar(250) NOT NULL default '' 

MYSQLを構文文句を言っていませんが、私は、クエリをダンプVAR時にfalseを返します。私はphpMyAdminのにそのクエリを投げ、それがこれを投げたSQLを実行しようとしたとき:

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs 

いずれかが、私はこの問題を解決するために何ができるか任意のアイデアを持っていますか?

ありがとう

+0

どのようにしてこの制限を延長するか、または再構成する必要がありますか? – Rooster

+1

実際の内容が行の外側に格納されるため、列BLOB(つまりTEXT)の一部を作成する以外には、行内の記憶域をポインタに減らす方法はありません。不思議なことに、これはエラーが言ったこととまったく同じです。 :) –

答えて

5

このテーブルにはいくつの列がありますか? 402? (私は望んでいない)。 MySQLには、テーブルの1行に格納できるデータ量(バイト)が制限されており、その限界に達しているように見えます。

編集:http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

私はあなたのデータ構造を再考する必要があると思う: は、ここでは、データの制限について読むことができますMySQLのサイトのリンクです。

質問:ExpressionEngineを使用していますか?

+1

+1は「私は望んでいません。私も! – cmbuckley

+0

bah。すばらしいです。私は再構成しなければならないように見える。私はクライアントがばかげた要求をしてはいけないことを望んでいた。 – Rooster

+0

は、自動インクリメントキーの値だけではありません。 402のうちの一部が削除されました。私は確信していません、その古いフレームワークと私は動的なフィールドジェネレータを使用していくつかの部分を書き直すことを望んでいた。 – Rooster

2

すべての列の合計サイズを制限値65,535バイト未満にします。 UTF8列は1文字あたり3バイトとカウントされることに注意してください。

65,535は、最大行サイズ(バイト)です。

MySQLから

のMySQL 5.0.3でVARCHARの実効最大長以降は (すべての列 間で共有されている65,535バイト)最大行サイズの対象と文字であります使用されるセット。

関連する問題