Найти Informix Db Locale - PullRequest
       29

Найти Informix Db Locale

0 голосов
/ 27 марта 2019

У меня ниже фрагмент кода, где я пытаюсь подключиться к базе данных IBM Informix.

  public void MakeConnection()
        {
            string ConnectionString = "Database=databasename;Host=ipaddress;Server=servername;Service=port;Protocol = olsoctcp; UID = userid; Password = password;";
            IfxConnection conn = new IfxConnection();
            conn.ConnectionString = ConnectionString;
            try
            {
                conn.Open();
            }
            catch (IfxException ex)
            {
                Console.WriteLine(ex.ToString());
            }    
            Console.ReadLine();
        }

Ошибка ниже при открытии соединения.

ОШИБКА [HY000] [Поставщик Informix .NET] [Informix] Несоответствие информации о локали базы данных.

Когда я пытаюсь подключиться, используя приложение windows ODBC Data sources, создав новый пользовательский источник данных в пользовательском DSN и предоставив все необходимые значения в каждом разделе Informix ODBC driver setup, я могу подключиться успешно.

Все, что я понимаю, это то, что значение Database Locale клиентского приложения и базы данных должно быть одинаковым для правильного выполнения запроса, и я попытался использовать en_US.57372 and en_US.UTF8 Локальная база данных при настройке в пользовательских DSN, которые работали довольно хорошо. Я публикую здесь изображение для лучшего понимания.

ODBC Driver Setup for Informix and connectivity test

Благодарим вас за то, что кто-то может помочь мне узнать, где я могу найти язык базы данных, сконфигурированный для базы данных Informix, а также подробно узнать, что на самом деле является причиной этой ошибки.

1 Ответ

0 голосов
/ 27 марта 2019

Наконец-то удалось подключиться к базе данных из тестового приложения! Хорошо, мы идем,

Шаг 1: Сначала нам нужно выяснить, какой языковой стандарт базы данных позволяет использовать эта база данных? поэтому, следуя @ Luis Marques , как он упомянул в разделе комментариев, обнаружил, что Database Locale используется en_US.57372, также поддерживается en_US.UTF8.

Шаг 2: По умолчанию значения свойства client locale and database locale объекта подключения будут такими, какие были установлены по умолчанию при установке Informix ODBC driver.

Немного изменил код моего тестового приложения, как показано ниже,

   public void MakeConnection()
        {
            string ConnectionString = "Database=databasename;Host=ipaddress;Server=servername;Service=port;Protocol = olsoctcp; UID = userid; Password = password;";
            IfxConnection conn = new IfxConnection();
            conn.ConnectionString = ConnectionString;
            conn.ClientLocale = "en_US.UTF8";
            conn.DatabaseLocale = "en_US.UTF8";
            try
            {
                conn.Open();
            }
            catch (IfxException ex)
            {
                Console.WriteLine(ex.ToString());
            }    
            Console.ReadLine();
        }

Таким образом, ручное присвоение client and database locale значений для объекта подключения с помощью того, что мы получили в шаг 1 , решило проблему.

...