Я видел частичную информацию, старую информацию, но ничто столь же хорошее как фактические файлы примера с краткими комментариями, что я имею локально.
Я должен понять точные отношения между 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
? У них, кажется, есть те же значения. Эти настройки являются определенными для базы данных, или действительно ли они универсальны?
Хорошо, простая разница между odbcinst.ini и odbc.ini с сайта unixodbc, который является первым хитом на google:
Системный файл odbcinst.ini содержит информацию о драйверах ODBC доступный для всех пользователей, а файл odbc.ini содержит информацию. о том, что DSN доступен для всех пользователей. Эти "Системные DSN" полезны. для таких приложений, как веб-серверы, которые могут быть запущены не как настоящие пользователя, и поэтому не будет домашнего каталога, содержащего .odbc.ini. файл.
Я использую FreeTDS
в Debian
для подключения php
-двигаемого вебсайта к базе данных MS-SQL Server 2005
Database.
Объяснение, которое я могу дать конфигурационным файлам:
/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
в обоих файлах, и значения иногда отличаются. Имеет ли это вообще смысл? Если да, то что преобладает?
Драйвер = /path/to/file.so
обычно должен быть одинаковым в обоих файлах, если оба выражены как пути. В odbc.ini
эта запись может быть вместо этого Driver = {имя драйвера}
, где имя указано в индексе в odbcinst.ini
. Вообще говоря, настройки в odbc.ini
преобладают над конфликтующими настройками в odbcinst.ini
, если они существуют.
2) Является ли
odbcinst.ini
JavaScript- как "прототип" дляodbc.ini
? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я перенести общие настройки изodbc.ini
вodbcinst.ini
?
Нет, odbcinst.ini
в этом смысле не является «прототипом». Параметры odbcinst.ini
относятся к драйверу , но не к DSN на основе этого драйвера.
3) В чем разница между
] Драйвер
иНастройка
вodbcinst.ini
? Кажется, у них одинаковые ценности. Эти настройки относятся к конкретной базе данных или они универсальны?
В odbcinst.ini
Driver =
относится к библиотеке драйверов, а Setup =
- к библиотека установки. Последнее является полностью необязательным, и если оно существует, его можно, но не обязательно, использовать во время соединения для передачи данных; в первую очередь он предназначен для использования администратором ODBC при «настройке» таких подключений для сохранения как DSN. Иногда эти библиотеки находятся в одном и том же физическом файле, но это не обязательно, и, например, обычно их нет в среде OS X.
Здесь (нажмите 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