質問

テキストファイルからデータベースにレコードを挿入するPerlスクリプトがあります。レコードには「rodr_í_guez」のようなマルチバイト文字があるときはいつでも。私はエラーORA-01461を受け取りますが、Varchar2からLongに切り替えるのに4000文字に近いところはありません

設定:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

接続する前には役に立たないようです。

Javaクライアント(リスSQL)を使用して、ステートメントに挿入を手動で書き込むと、レコードが正常に挿入されるため、データベースの構成方法ではないと確信しています。

何かご意見は?

役に立ちましたか?

解決

おそらく、nls_lang環境変数を設定する必要があります。 Unix-ish Systemsの場合、$ oracle_home/server/binで供給されるスクリプトがあります nls_lang.sh Lang Environment変数に基づいて、システムの合理的な値を出力します。

たとえば、私のシステムの場合(lang = en_gb.utf-8)同等のオラクル設定は

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

より詳しい情報: http://forums.oracle.com/forums/thread.jspa?threadid=381531

Sergiuszの投稿には、実際には知っておく必要があることはすべて言われています。PerlDBD:: Oracle DriverがOCIベースであり、Pure-Java JDBCドライバーはそうではないため、同じ環境では異なって動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top