Domanda

Ho uno script perl che sta inserendo record da un file di testo nel nostro database. Ogni volta che il record ha un carattere multibyte come "RODR_Í_GUEZ". Ricevo l'errore ORA-01461, ma io sono in nessun posto vicino i 4000 caratteri per passare da varchar2 a lungo

Impostazione:

$ENV{NLS_CHARACTERSET} = 'AL32UTF8';  

prima di collegare non sembrano aiutare.

Utilizzando un client java (scoiattolo SQL) e scrivere manualmente l'istruzione INSERT INTO inserisce il record più che bene, quindi sono sicuro che non è come il database è configurato.

Qualche idea?

È stato utile?

Soluzione

Probabilmente si desidera impostare la variabile di ambiente NLS_LANG. Per i sistemi Unix-ish, v'è uno script fornito in $ ORACLE_HOME / server / bin chiamato nls_lang.sh per emettere un valore ragionevole per il sistema, sulla base della variabile d'ambiente LANG.

es. per il mio sistema (LANG = it_IT.UTF-8) l'impostazione di Oracle equivalente è

NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8

Più informazioni: http://forums.oracle.com/forums/thread .jspa? threadID = 381531

Il post di Sergiusz ci dice praticamente tutto quello che dovete sapere: io solo aggiungere che il driver Perl DBD :: Oracle è basata OCI, e il puro Java-driver JDBC non è, di conseguenza, essi funzionano in modo diverso nella stessa ambiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top