Frapper ORA-01461 lors de l'insertion de caractères multi-octets perl dans Oracle
Question
J'ai un script perl qui est l'insertion d'enregistrements à partir d'un fichier texte dans notre base de données. Chaque fois que le disque a un caractère multi-octets comme « RODR_Í_GUEZ ». Je reçois l'erreur ORA-01461, mais je ne suis nulle part près des 4000 caractères à passer de varchar2 à long
réglage:
$ENV{NLS_CHARACTERSET} = 'AL32UTF8';
avant de connecter ne semble pas à l'aide.
En utilisant un client java (mySQreuiL SQL) et de l'écriture manuellement l'instruction INSERT INTO insère le disque très bien, donc je suis sûr que ce n'est pas comment la base de données est configurée.
Toutes les pensées?
La solution
Vous voulez probablement définir la variable d'environnement NLS_LANG. Pour les systèmes Unix ish, il y a un script fourni dans $ ORACLE_HOME / server / bin appelé nls_lang.sh
à la sortie une valeur raisonnable pour votre système, en fonction de la variable d'environnement LANG.
par exemple. pour mon système (LANG = fr_FR.UTF-8) l'équivalent paramètre Oracle est
NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8
Plus d'infos: http://forums.oracle.com/forums/thread .jspa? threadID = 381531
poste de Sergiusz il dit pratiquement tout ce que vous devez savoir: Je vais juste ajouter que le Perl DBD :: Oracle pilote est basé-OCI, et le pilote pur Java JDBC n'est pas, par conséquent, ils fonctionnent différemment dans le même environnement.