10
votes

ORA-00604 ORA-12705

J'ai cette erreur dans mon application Web J2EE.

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
 oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:376)
 oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
 oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
 java.sql.DriverManager.getConnection(Unknown Source)
 java.sql.DriverManager.getConnection(Unknown Source)
 org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
 org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
 org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
 org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)


 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)


0 commentaires

11 Réponses :


8
votes

essayer suivant:

  1. Vérifiez que le paramètre NLS_LANG est correct. Sous Windows, il est dans le registre sous \ hkey_local_machine \ logiciel \ oracle .
  2. Vérifiez que le logiciel client Oracle est correctement installé.
  3. Vérifiez s'il existe plusieurs maisons Oracle sur cet ordinateur. Dans ce cas, trouvez une entreprise active et vérifiez si cela fonctionne.
  4. Test avec SQL * Plus s'il y en a un installé. SQL Developer fonctionne car il a sa propre installation client.

    edit:

    En ce qui concerne les pilotes, consultez ce site: Client Instant Oracle . Vous trouverez une documentation sur l'installation minimale des pilotes nécessaires à l'accès JDBC à Oracle. Je ne sais pas grand chose à ce sujet parce que j'utilise .net.

    Edit 2:

    Voir cette question: paramètre NLS_LANG pour le conducteur mince JDBC . Il y a la même erreur que vous et le problème était que les paramètres régionaux par défaut pour NLS Lang n'ont pas été définis. Citation:

    Les paramètres NLS_LANG sont dérivés du Java.Util.Locale. Par conséquent, vous devrez appeler un appel similaire à celui-ci avant de connecter: xxx


1 commentaires

Dois-je installer un client Oracle pour mon application Web pour vous connecter? Je pensais avoir juste besoin du pot de pilotes ODBC inclus dans mon projet.



7
votes

J'ai compris que vous pouviez transmettre que vous pouviez transmettre que deux paramètres de votre application Java pour résoudre le problème:

-Duser.country=en -Duser.language=en


0 commentaires

1
votes

J'ai trouvé une solution, je change simplement la langue régionale et la langue dans mon système d'exploitation (Windows 7), assurez-vous qu'il correspond à la région régionale et de langue Oracle.


0 commentaires

7
votes

J'ai eu le même problème. La solution consistait à ajouter le pays et la langue à sqldeveloper.conf

Veuillez ouvrir le fichier: xxx

et ajoutez ce qui suit: < / p> xxx

ce qui précède fait le truc.

référence: http://forum.oradba.net/showthread.php?t=423&langid=1


3 commentaires

Travaillé pour moi. Mais c'est la science de la fusée ... je veux dire comment je suppose que ça ...


Tu es le gouverneur lol, 2 heures plus tard merci beaucoup!


Vous avez sauvé ma journée.



5
votes

Pour Windows env, vous devez modifier le système local et format système sur anglais / US . .

Comment changer le système locale?


0 commentaires

1
votes

Le pilote Oracle JDBC exécute implicitement l'instruction suivante après l'ouverture de la nouvelle connexion:

-Doracle.jdbc.languageMap="ru=RUSSIAN;RU=RUSSIAN"


1 commentaires

Merci pour cette réponse! Dans mon cas, c'était system.setproperty ("oracle.jdbc.territoiremap", "ru = russie; ru = cis"); affectation qui a résolu le problème (pour l'ancien Oracle9i).



0
votes

première requête exécutée: xxx

Cela donnera à Oracle régional et langue. Changez la langue régionale et la langue au système d'exploitation, les deux devraient correspondre.


0 commentaires

0
votes

Vérifiez la variable système Java_Home et vérifiez qu'il s'agit de la même version que vous utilisez dans vos projets et programmes


1 commentaires

Vous devriez fournir plus d'informations sur cette variable: où le trouver? Qu'est-ce que ça fait vraiment? etc.



1
votes

Si vous compilez avec Intelljide, je vous conseille d'ajouter des options suivantes dans VMOPTIONS trouvés dans Configurations Modèle

AddVMOption -Duser.region=us. 


0 commentaires

0
votes

Changer les paramètres de la région et la langue de ma machine a aidé à vous échapper avec cela. J'ai changé de région aux États-Unis et en anglais (États-Unis) comme langue.


0 commentaires

0
votes

Si vous exécutez une application de printemps, add locale.setdefault (locale.frish); à la classe principale.

public static void main(String[] args) throws Exception
{
    Locale.setDefault(Locale.ENGLISH);
    SpringApplication.run(ApplicationName.class, args);



}


0 commentaires