web-dev-qa-db-ja.com

DB2'CLOB(50000)フィールドに40000文字を挿入すると、...で始まる文字列定数が長すぎます 'エラー

DB2テーブルにCLOB(50000)フィールドを作成し、それが正しく作成されたことを確認しました。

DB2 DESCRIBE TABLE dbname

...ただし、フィールドに40,000文字の文字列を挿入しようとしただけでも、次のエラーメッセージが表示されました。

 [IBM][CLI Driver][DB2/LINUXX8664] SQL0102N  The string constant beginning with
 "'''Testing Long Notes! Testing Long Notes! Testing Long Notes! Testing" is too long.  
 SQLSTATE=54002 SQLCODE=-102

「長い音符をテストします!」これは、40,000の文字列長を作成するために、HTMLフィールドで何度も繰り返した文字列です。 PHPスクリプトは、投稿されたHTMLフォームを処理し、SQL INSERTを試行しますが、エラーが発生します。

ここで何が欠けていますか? CLOB(50000)設定をオーバーライドする最大フィールドサイズが設定されている場所は他にありますか?おそらく、フィールドサイズを制御するための構成アイテムですか?

クライアントがMySQLからの変換を必要とした後、私はDB2に比較的慣れていません。

1
dabayl

値を自分でクエリに連結する代わりに、 プリペアドステートメント を使用する必要があります。これは、グッドプラクティスとしてMySQLにも当てはまります。プリペアドステートメントは、SQLインジェクションからユーザーを保護します。

DB2は、32,000文字を超える生の照会の処理を拒否します。

4
Leo