Удар ORA-01461 при вставке многобайтовых символов из Perl в Oracle

StackOverflow https://stackoverflow.com/questions/4424126

Вопрос

У меня есть сценарий Perl, который вставляется записи из текстового файла в нашу базу данных. Всякий раз, когда запись имеет многобитный характер, такой как «Rodr_í_gegez». Я получаю сообщение об ошибке ORA-01461, однако я не здесь рядом с 4000 символами, чтобы переключиться с Varchar2 до длительного

параметр:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

Перед подключением не помогает.

Использование клиента Java (SQL SQL) и вручную запись в вставку в оператор вводит запись просто отлично, поэтому я уверен, что это не так, как база данных настроена.

Есть предположения?

Это было полезно?

Решение

Вы, вероятно, хотите установить переменную среды NLS_LANG. Для систем Unix-ish есть скрипт, поставляемый в $ Oracle_Home / Server / Bin вызываемый nls_lang.sh Чтобы вывести разумное значение для вашей системы, основанное на переменной среды Lang.

например, для моей системы (lang = en_gb.utf-8) эквивалентная настройка Oracle

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

Больше информации: http://forums.orcle.com/forums/thread.jspa?threadid=381531.

Почта Сергиуса там говорит практически все, что вам нужно знать: я просто добавлю, что DBD Perl :: Oracle Driver - это OCI на основе OCI, и драйвер Pure-Java JDBC, следовательно, они работают по-разному в той же среде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top