私はInformix 11.70データベースを持っています。この挿入文をテーブルで正常に実行することができません。エラー新しい行と引用符を含むテキスト列を含むエントリを挿入するエラー
INSERT INTO some_table(
col1,
col2,
text_col,
col3)
VALUES(
5,
50,
CAST('"id","title1","title2"
"row1","some data","some other data"
"row2","some data","some other"' AS TEXT),
3);
私は、受信エラーがある:
[エラーコード:-9634、SQLの状態:IX000]テキストへのcharからのキャスト。
私はテキスト・リテラルで新しい行を使用して可能にするために、この文を追加しなければならないことがわかったので、私は、私はすでに書かれている同じクエリの上にこれを追加しました:まだ
EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('t');
、私が受け取ります同じエラー。
私はまた、新しい行を代わりに許可するために、ONCONFIG
ファイルにALLOW_NEWLINE
パラメータを設定することができるIBMのドキュメントを読んでいます。私は最後の1つは、私が持っていない、その設定ファイルを変更するためにサーバーへの管理アクセスが必要と仮定し、私はこの設定を利用しないことを好む。
お返事ありがとうございます。残念ながら、データベースとの通信に使用されるのはJavaで、ORM(特にHibernate)です。したがって、私は 'loc_t'ロケータ構造を利用できないのではないかと心配しています。LVARCHAR型については、MS SQL ServerのNVARCHARとほぼ同じ制限があるか、間違っていますか?もしそうでなければ、私たちのテキスト列が4096文字より長い文字列を保持するのではないかと心配しています(UTF-8を使用する場合)。 –
LVARCHARのデフォルトは2048バイトですが、32 KiB未満の陰影になる可能性があります。しかし、行全体の長さにも32 KiBの制限があります。 BYTE、TEXT、BLOBおよびCLOBは、行内に固定サイズ(56バイトまたは64バイト)の記述子を格納し、データは別の場所に格納されます。 LVARCHARは行に格納されます。どのくらい大きなものを手に入れる必要がありますか?どのJDBCドライバを使用していますか? Informixドライバ(Java Common ClientまたはJCCバージョンのJDBCとは対照的に)は、BYTE、TEXTを合理的に処理する必要がありますが、SQLのように文字列リテラルではない可能性があります。 –
CASTなしで試してみて失敗したと思いますか?人々は通常、問題に遭遇するまでCASTを追加するつもりはありませんが、場合によっては... –