2012-01-16 12 views
6

以下のクエリをMySQLで実行しようとしていますが、SQLエラー1406のデータが毎回カラムエラーのために長すぎます。列のデータ型はlongtextです。何か案は?SQLエラー1406データが長すぎます

UPDATE `my_db`.`my_table` SET `content` = '<div id="primaryContent"><div id="offices_map"></div><!-- #offices_map --><div id="offices_mapControlPanel" class="cf"><ul id="offices_continentLinkList"><li><a href="#" rel="Africa">AFRIQUE</a></li><li><a href="#" rel="Asia">ASIE</a></li><li><a href="#" rel="Australasia">AUSTRALASIE</a></li><li><a href="#" rel="Europe" id="offices_europeLink" class="current">EUROPE</a></li><li><a href="#" rel="NorthAmerica">AMERIQUE DU NORD</a></li><li class="last"><a href="#" rel="SouthAmerica">AMERIQUE DU SUD</a></li></ul><ul id="offices_mapLegend"><li id="offices_mapLegendRedPointer">Bureaux Panavision</li><li id="offices_mapLegendYellowPointer">Agents Panavision</li></ul></div><!-- #offices_mapLegend --><div id="offices_ownedOfficesContactDetails" class="cf"><h2>Bureaux Panavision</h2><ul class="cf"><li class="first"><strong>Panavision Greenford</strong> - pour l''Europe et l''Afrique - <a href="#" id="offices_linkPanavisionGreenford">D&#233;tails</a></li><li>Panavision Prague - <a href="#" id="offices_linkPanavisionPrague">D&#233;tails</a></li><li>Panavision Manchester - <a href="#" id="offices_linkPanavisionManchester">D&#233;tails</a></li><li>Panavision Alga &amp; Cinecam - <a href="#" id="offices_linkPanavisionAlga">D&#233;tails</a></li><li>Panavision Rh&ocirc;ne-Alpes - <a href="#" id="offices_linkPanavisionRhoneAlpes">D&#233;tails</a></li><li>Panavision Marseille - <a href="#" id="offices_linkPanavisionMarseille">D&#233;tails</a></li><li>Panavision Pologne - <a href="#" id="offices_linkPanavisionPoland">D&#233;tails</a></li><li>Panavision Dublin - <a href="#" id="offices_linkPanavisionDublin">D&#233;tails</a></li><li>Panavision Belgique - <a href="#" id="offices_linkPanavisionBelgium">D&#233;tails</a></li></ul></div><!-- #offices_ownedOfficesContactDetails --></div><!-- #offices_mapControlPanel --><div class="cf"></div>' WHERE `my_table`.`id` = 27; 

おかげで、ここでSHOWからの結果は、CREATE TABLEをだ

CREATE TABLE `my_table` ( 
    `content` longtext NOT NULL, 
    `cat` text NOT NULL, 
    `starter` int(1) NOT NULL, 
    `at` int(11) DEFAULT '0', 
    `table` varchar(60) DEFAULT NULL, 
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=84 DEFAULT CHARSET=latin1 | 

ちょうど特別なが含まれていないこの短いクエリを試してみました/文字をエスケープしますが、私はまだエラーを取得します。あなたの助けみんなのため

UPDATE `my_db`.`my_table` SET `contenu` = '<div id="primaryContent"><div id="offices_map"></div><!-- #offices_map --><div id="offices_mapControlPanel" class="cf"><ul id="offices_continentLinkList"><li><a href="#" rel="Africa">AFRIQUE</a></li><li><a href="#" rel="Asia">ASIE</a></li><li><a href="#" rel="Australasia">AUSTRALASIE</a></li><li><a href="#" rel="Europe" id="offices_europeLink" class="current">EUROPE</a></li><li><a href="#" rel="NorthAmerica">AMERIQUE DU NORD</a></li><li class="last"><a href="#" rel="SouthAmerica">AMERIQUE DU SUD</a></li></ul><ul id="offices_mapLegend"><li id="offices_mapLegendRedPointer">Bureaux Panavision</li><li id="offices_mapLegendYellowPointer">Agents Panavision</li></ul></div><!-- #offices_mapLegend -->' WHERE `my_table`.`id` = 27; 

[SOLVED] おかげで、私は、HTMLのコメントを削除し、それが働きました。

+3

あなたは 'SHOW CREATE TABLE my_db.my_table'の結果を貼り付けても構いませんか?それは問題の解決に役立つでしょう。 – Mchl

+0

上記のように更新しました。ありがとうございます。 –

答えて

2

カラムのデータ型に問題がある必要があります。

あなたが挿入している(更新による)文字列は、1,875であり、これは長いテキストの限界近くにありません。

「pour l''Europe et l'' Afrique」の挿入文字列を見てみましょう。それは問題を引き起こしている可能性があります、 "'"文字なしでデータを挿入しようとします。

1,875文字の文字列を挿入できますか(おそらく "aaaaaaa ....")。これは、挿入している文字列の内容に関する問題を排除します。

+0

@AnthomnyBlakeこの文字列は、テキストタイプのファイルに保存されました – Dau

+0

テーブルのおかげでありがたいです - 私は自分の答えを更新しました、試してみてください – AnthonyBlake

+0

ありがとう、私は[上記]と同じ結果を得ました。今回は文字列にエスケープ文字はありません。 –

1

私はあなたがvarcharタイプとして提出されたコンテンツを作ると思います。長いテキストを保存するには、textタイプにしてください。このタイプは長さを必要としません

+0

現在のデータ型は最大長が4GBの 'LONGTEXT'です – Mchl

+0

更新のための@Mchlありがとう – Dau

5

別の列にエラーが発生する可能性はありますが(エラーメッセージには正確な列はありませんが、これは奇妙です)、マニュアルの内容はLONGTEXTです:

最大長が4,294,967,295または4GB(232 - 1) 文字のTEXT列。値に マルチバイト文字が含まれている場合、実効最大長は短くなります。 LONGTEXT 列の有効最大長は、 クライアント/サーバープロトコルと使用可能メモリの構成済み最大パケットサイズによっても異なります。各LONGTEXT値は、値に バイトの数を示す4バイト長のプレフィックスを使用して格納された です。

あなたは、このクエリで最大パケットサイズを確認することができます。

SELECT @@max_allowed_packet 

それは小さな値であることを起こる場合は、更なる情報については、このrelated answerを参照してください。

+1

ありがとうございます、max_allowed_pa​​cketは1M(1048576)に設定されていますが、このクエリは約2Kbにしかならないでしょうか?とにかく値を変更して試してみましょう。 –

+0

あなたは正しいです、この場合は問題ではありません。 –

関連する問題