PerlからOracleにマルチバイト文字を挿入するときにORA-01461を打つ
質問
テキストファイルからデータベースにレコードを挿入する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ドライバーはそうではないため、同じ環境では異なって動作します。
所属していません StackOverflow