Проверьте /etc/odbcinst.ini, /etc/odbc.ini, ~ / .odbc.ini и $ ODBCINI, чтобы увидеть, какие права назначены. Я полагаю, что пользователь, выполняющий команду, может не иметь прав на один из этих файлов или даже не иметь определенного источника данных, если он был создан под другим пользователем.
Взято из распространенных сообщений об ошибках и что такое odbc.ini и что мне в него вставить? Более того, проверьте /etc/odbc.ini и ~ / .odbc.ini пользователя, к которому вы добавили DSN, а также пользователя, под которым вы работаете. Если они одинаковы, вам нужно сделать это только один раз.
Распространенные сообщения об ошибках
[iODBC] [Driver Manager] Имя источника данных не найдено и драйвер по умолчанию не указан. Не удалось загрузить драйвер, SQLSTATE = IM002
Есть несколько причин, по которым это сообщение может появиться. Лучшее решение - проследить, что происходит: ваше приложение было связано с libiodbc, который пытался найти файл odbc.ini тем или иным способом - либо через переменную среды ODBCINI, либо через запасные пути (обычно это / etc / odbc.ini, в зависимости от того, как он был скомпилирован). Вы должны проверить, что такой файл существует в подходящем месте и доступен ли он (особенно если ваше приложение запускается с другими привилегиями пользователя - например, apache / php работает как пользователь www-data).
Кроме того, возможно, что iODBC нашел подходящий файл odbc.ini, но ни один из найденных файлов не содержит запрошенный DSN. Проверьте синтаксис вашего запроса - правильна ли строка подключения ODBC и существует ли запрашиваемый DSN? См. Также раздел этого часто задаваемого вопроса, озаглавленный «Что такое odbc.ini и что мне в него вставить?».
Что такое odbc.ini
Odbc.ini - это основной файл конфигурации, в котором хранятся все ваши DSN и большая часть параметров конфигурации ODBC. В iODBC есть путь поиска для поиска такого файла конфигурации: сначала проверяется переменная среды ODBCINI, чтобы определить, указывает ли она на подходящий файл, или ~ / .odbc.ini (аналогично пользовательским DSN в Windows), а затем / etc / odbc.ini («общесистемный») - это резервные местоположения.
Файл odbc.ini состоит из 3 частей: набора параметров ODBC, списка DSN, а затем самих определений источника данных, таким образом:
[ODBC Data Sources] PostgreSQL native localhost = PostgreSQL native driver PostgreSQL OpenLink localhost = PostgreSQL over OpenLink multi-tier [PostgreSQL native localhost] Driver = /usr/lib/postgresql/lib/libodbcpsql.so Host = localhost Server = localhost ServerName = localhost Database = tim UserName = tim UID = tim Port = 5432 [PostgreSQL OpenLink localhost] Description = PostgreSQL, over openlink MT Driver = /opt/openlink/lib/oplodbc.so ServerType = PostgreSQL95 Host = localhost Database = tim Username = tim LastUser = tim User = tim FetchBufferSize = 99 [ODBC] ;Trace = 1 ;TraceFile = /tmp/odbctrace.log ;Debug = 1 ;DebugFile = /tmp/odbcdebug.log
Список источников данных ODBC соотносится с файлом odbcinst.ini (или переменной среды ODBCINSTINI): для каждого значения, используемого в качестве описания драйвера, в odbcinst.ini должен быть соответствующий раздел, содержащий список драйверов и библиотеки установки (чтобы помочь с графической конфигурацией с использованием iodbcadm-gtk, а также используется для отображения поля ввода в случае, если во время соединения представлено недостаточно параметров).
Список атрибутов зависит от драйвера, как показано выше: собственный драйвер postgresql вызывает их по-разному, чем многоуровневый openlink, поэтому вам нужно проверить это в документации вашего драйвера.
С iODBC, если вы загрузили / установили / скомпилировали его, у вас также есть графический интерфейс на основе GTK для настройки ваших DSN ODBC: запустите iodbcadm-gtk.