Я видел частичную информацию, старую информацию, но ничего лучше фактических файлов примеров с краткими комментариями, которые у меня есть локально.
Мне нужно понять точную связь между odbc.ini
и odbcinst.ini
. Внешне это довольно очевидно - вверху odbc.ini
В файле есть такой раздел:
[ODBC Data Sources]
MYDSN = MyDriverName
...
Однако я не уверен, могу ли я, например, иметь настройки в драйвере или в разделе DSN.
1) у меня есть строчка Driver = /path/to/file/.so
в обоих файлах и значения иногда различаются. Имеет ли это вообще смысл? Если да, то что преобладает?
2) Есть odbcinst.ini
JavaScript-подобный "прототип" для odbc.ini
? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я продвигать общие настройки из odbc.ini
в odbcinst.ini
?
3) В чем разница между Driver
и Setup
в odbcinst.ini
? Кажется, у них одинаковые ценности. Эти настройки относятся к конкретной базе данных или универсальны?
я использую 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);
}
и т.д .. и т.д ..
Я уверен, что есть много других переменных, которые можно установить и использовать, но это самое простое объяснение файлов, о которых вы спрашивали.
Если вы посмотрите только на реализации Unix, вы получите некоторые интересные идеи о том, как работает ODBC. Ни одна из этих реализаций не на 100% сопоставима с эталонной реализацией в Windows, созданной сопровождающим Спецификация ODBC, то есть Microsoft.
В Unix обычно используются два менеджера драйверов ODBC. iODBC, чья документация, имеющая отношение к этому вопросу, находится здесь, поддерживается и поддерживается моим работодателем. UnixODBC это другой, и это обсуждалось в других ответах. Они должны быть API-эквивалентами друг друга и реализации Windows, поскольку оба являются платформо-независимыми реализациями стандарта.
Проще говоря, odbcinst.ini
- это реестр и файл конфигурации для драйверов ODBC в среде, а odbc.ini
- это реестр и файл конфигурации для ODBC DSN (имен источников данных), обычно основанный на драйверах, зарегистрированных в другом.
У вас было несколько конкретных вопросов ...
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
? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я продвигать общие настройки изodbc.ini
вodbcinst.ini
?
Нет odbcinst.ini
в этом смысле не является «прототипом». odbcinst.ini
настройки относятся к Водитель, но не в DSN на основе этого драйвера.
3) В чем разница между
Driver
иSetup
вodbcinst.ini
? Кажется, у них одинаковые ценности. Эти настройки относятся к конкретной базе данных или универсальны?
В odbcinst.ini
, то Driver =
относится к библиотеке драйверов, и Setup =
в библиотеку установки. Последнее является полностью необязательным, и если оно существует, его можно, но не обязательно, использовать во время соединения для передачи данных; в первую очередь он предназначен для использования администратором ODBC при «настройке» таких соединений для сохранения как DSN. Иногда эти библиотеки находятся в одном физическом файле, но это не обязательно, и, например, обычно их нет в среде OS X.
Хорошо, простая разница между odbcinst.ini и odbc.ini от unixodbc сайт, который первым попал в Google:
Системный файл odbcinst.ini содержит информацию о драйверах ODBC, доступных всем пользователям, а файл odbc.ini содержит информацию о DSN, доступных всем пользователям. Эти «Системные DSN» полезны для таких приложений, как веб-серверы, которые могут работать не от имени реального пользователя и поэтому не имеют домашнего каталога для хранения файла .odbc.ini.
Предполагается, что руководства будут Вот (нажмите 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