Шукаєте гарну документацію щодо файлів odbc.ini та odbcinst.ini в Linux


11

Я бачив часткову інформацію, стару інформацію, але не так добре, як фактичні зразки файлів з короткими коментарями, які я маю локально.

Мені потрібно зрозуміти точну залежність між odbc.iniта odbcinst.ini. Поверхово це досить очевидно - вгорі odbc.iniфайлу є розділ на зразок:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Однак я не впевнений, чи можу я, наприклад, налаштувати або драйвер, або розділ DSN.

1) У мене є рядки Driver = /path/to/file/.soв обох файлах, і значення іноді відрізняються. Це навіть має сенс? Якщо так, що переважає?

2) Чи odbcinst.ini"прототип" схожий на JavaScript odbc.ini? Тобто, якщо я створюю ряд DSNs із загальними настройками, можна просувати спільні настройки з odbc.iniв odbcinst.ini?

3) Яка різниця між Driverі Setupв odbcinst.ini? Вони, схоже, мають однакові значення. Ці налаштування є специфічними для бази даних чи вони універсальні?



Я думаю, що посилання вище допоможе відповісти. Подумайте про це, якщо ви налаштуєте файл odbc.ini для джерела даних ORACLE, як система знає, що таке ORACLE, саме це визначає odbcinst.ini. Це може бути просто локальним для певного набору шляхів / програмного забезпечення, а не для системи.
Schrute

Відповіді:


9

Я використовую FreeTDSна Debianз'єднати phpкероване суспільство сайту в MS-SQL Server 2005базу даних.

Пояснення, яке я можу дати файлам налаштування:

/etc/odbc.ini

Зберігає екземпляр, на який йдеться в обробнику (наприклад php), який підключається до бази даних (див. Приклад нижче). Конфігурація визначає сервер, до якого потрібно підключитися.

[freetds_odbc_connection]
Driver          =       FreeTDS
Description     =       test
Database        =       MyCompanyDb
Server          =       frodo
Readonly        =       Yes
Port            =       1433
Trace           =       No

-

/etc/odbcinst.ini

Зберігає конфігурацію для Driverрозділу в odbc.ini.

[FreeTDS]
Description     = TDS connection
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
UsageCount      = 1
FileUsage       = 1
Trace           = Yes
TraceFile       = /tmp/odbcinst_tr

-

show-companies.php

Приклад phpкоду, щоб продемонструвати, як я встановив і використовую з'єднання.

  $host="freetds_odbc_connection";
  $user="freetds";
  $password="secretpassword";
  $conn_id = odbc_connect($host, $user ,$password) or die (odbc_errormsg());

  $sql_companies =  "SELECT * from AMGR_Client_Tbl WHERE Record_Type='1'";

  $query_companies = odbc_exec($conn_id, $sql_companies);
  while (odbc_fetch_row($query_companies))
  {
    $client_id     = odbc_result($query_companies, 6);
    $company_name  = odbc_result($query_companies, 9);
  }

тощо .. тощо.

Я впевнений, що існує багато інших змінних, які можна встановити та використати, але це найпростіше пояснення, яке я можу дати тим файлам, про які ви запитали.


4

Якщо ви подивитесь лише на виконання Unix, ви отримаєте кілька цікавих ідей про те, як працює ODBC. Жодна з цих реалізацій не на 100% порівнянна з еталонною реалізацією в Windows, виробленою технічним обслуговувачем специфікації ODBC, тобто Microsoft .

У Unix зазвичай зустрічаються два менеджери драйверів ODBC. iODBC , чия документація, що стосується цього питання, знаходиться тут , підтримується та підтримується моїм роботодавцем. UnixODBC - це інше, про що йшлося в інших відповідях. Вони повинні бути еквівалентними API один одному та реалізацією Windows, оскільки обидва є платформово-агностичними реалізаціями стандарту.

Простіше кажучи, odbcinst.iniце файл реєстру та конфігурації для драйверів ODBC в середовищі, тоді odbc.iniяк файл реєстру та конфігурації для DSN-кодів ODBC (Імена джерел даних), як правило, засновані на драйверах, зареєстрованих в іншому.

У вас було кілька конкретних питань ...

1) У мене є рядки Driver = /path/to/file/.soв обох файлах, і значення іноді відрізняються. Це навіть має сенс? Якщо так, що переважає?

Як Driver = /path/to/file.soправило, вони повинні бути однаковими в обох файлах, коли обидва виражаються у вигляді шляхів. У odbc.iniцьому замість цього запису може бути місце, Driver = {name of driver}де ім'я індексовано odbcinst.ini. Взагалі кажучи, налаштування odbc.iniпереважають над конфліктуючими, odbcinst.iniякщо такі існують.

2) Чи odbcinst.ini"прототип" схожий на JavaScript odbc.ini? Тобто, якщо я створюю ряд DSNs із загальними настройками, можна просувати спільні настройки з odbc.iniв odbcinst.ini?

Ні, odbcinst.iniне є "прототипом" таким чином. odbcinst.iniналаштування стосуються драйвера , але не для DSN, заснованих на цьому драйвері.

3) Яка різниця між Driverі Setupв odbcinst.ini? Вони, схоже, мають однакові значення. Ці налаштування є специфічними для бази даних чи вони універсальні?

В odbcinst.ini, Driver =посилається на бібліотеку драйверів і бібліотеку Setup =налаштувань. Останнє є абсолютно необов’язковим, і коли воно існує, воно може, але не потрібно використовувати під час з'єднання даних; він в першу чергу призначений для використання адміністратором ODBC при "налаштуванні" таких з'єднань, щоб зберігатись як DSN. Іноді ці бібліотеки знаходяться в одному фізичному файлі, але вони не повинні бути, і, наприклад, зазвичай не знаходяться в середовищі OS X.


1

Добре різниця між простим odbcinst.ini і odbc.ini від UnixODBC сайту , який є першим хітом на Google:

Системний файл odbcinst.ini містить інформацію про драйвери ODBC, доступну для всіх користувачів, а файл odbc.ini містить інформацію про DSN, доступну для всіх користувачів. Ці "Системні DSN" корисні для таких додатків, як веб-сервери, які можуть не працювати як реальний користувач і тому не матимуть домашнього каталогу, який би містив файл .odbc.ini.


Спасибі. Я забув згадати, що я дуже багато чого зробив із синтаксису - адже кожен DSN повинен вказати драйвер у самій вершині odbc.ini з синтаксисом {DSN} = {Driver}, але я все ще сильно плутаюсь.
Леонід

0

Керівництва припускають , щоб бути тут (натисніть Manualsпотім User Manual). Але, на жаль, посилання на " Administrator Manualі" Programmer Manualпорушені. (Я повідомив про це, і мені сказали, що вони будуть виправлені.)

Тож поки що ...

Пропущені посібники знайдено, завантаживши unixODBC-2.3.4.tar.gz з http://www.unixodbc.org/, а потім відкрийте його за допомогою менеджера архівів (тощо) та перегляньте ці три посібники:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.