Удар ORA-01461 при вставке многобайтовых символов из Perl в Oracle
Вопрос
У меня есть сценарий 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, следовательно, они работают по-разному в той же среде.