Старый и устаревший ORA-12705: не удается получить доступ к файлам данных NLS или указана неверная среда, а java Locale.setDefault () - PullRequest
2 голосов
/ 14 января 2011

У меня есть вопрос, который сводит меня с ума на моем ноутбуке у меня есть oracle-xe 10.2.0 на Ubuntu

БД Charset: AMERICAN_AMERICA.AL32UTF8

NLS_LANG = AMERICAN_AMERICA.AL32UTF8

public static void main(String[] args) throws Exception {

//    Default locale before overwriting is ru_RU
//    Locale.setDefault(new Locale("EN"));
//
    Class.forName("oracle.jdbc.driver.OracleDriver");

    Connection conn = DriverManager.getConnection(
        "jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    try {
    // @machineName:port:SID, userid, password

      Statement stmt = conn.createStatement();
      try {
        ResultSet rset = stmt
            .executeQuery("select * from test");
        try {
          while (rset.next())
            System.out.println(rset.getString(1)); // Print col 1
        } finally {
          try {
            rset.close();
          } catch (Exception ignore) {
          }
        }
      } finally {
        try {
          stmt.close();
        } catch (Exception ignore) {
        }
      }
    } finally {
      try {
        conn.close();
      } catch (Exception ignore) {
      }
    }
  }

Если я комментирую Locale.setDefault, у меня ORA-12705: невозможно получить доступ к файлам данных NLS или недопустимому исключению, указанному в среде (языковой стандарт по умолчанию в этом случае остается ru_RU), но если я установил языковой стандарт по умолчанию EN, то все в порядке .

Что это может значить? Почему вместо NLS_LANG используется значение Locale.getDefault, как об этом написано в каждой статье?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 октября 2015

Пожалуйста, используйте следующие параметры виртуальной машины: -Duser.region = US -Duser.language = en -Duser.country = US

0 голосов
/ 02 февраля 2011

По умолчанию локаль JDBC определяется из локали JVM, NLS_LANG игнорируется. Другой способ изменить локаль - указать аргументы командной строки -Duser.language и -Duser.country.

...