У меня проблемы с unixODBC. Я установил последнюю версию и в настоящее время работает только с sudo . Для тестирования ODBC я использовал isql . Пример:

# isql -v testTable
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

С sudo

# sudo isql -v testTable
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

Почему это так и как я могу использовать это без sudo?

Примечание: я не использовал sudo во время установки. И я установил его как рут и пытаюсь использовать как рут.

ОБНОВИТЬ

# ls -ltr /usr/local/psql/etc/odbcinst.ini
ls: cannot access /usr/local/psql/etc/odbcinst.ini: No such file or directory
# ls -ltr /etc/odbcinst.ini
-rw-r--r-- 1 root root 740 28 nov  8,04 /etc/odbcinst.ini

Содержание /etc/odbcinst.ini

~]# cat /etc/odbcinst.ini


# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver      = /usr/lib/psqlodbcw.so
Setup       = /usr/lib/libodbcpsqlS.so
Driver64    = /usr/lib64/psqlodbcw.so
Setup64     = /usr/lib64/libodbcpsqlS.so
FileUsage   = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver      = /usr/lib/libmyodbc5.so
Setup       = /usr/lib/libodbcmyS.so
Driver64    = /usr/lib64/libmyodbc5.so
Setup64     = /usr/lib64/libodbcmyS.so
FileUsage   = 1

Обновление /etc/odbc.ini

[myDSN]
Description         = MySQL Connection
Driver              = MySQL
Database            = testTable
User                = mysql
Password            = ******
Port                = 3310
Server              = localhost
Socket              = /var/lib/mysql/mysql.sock

Еще одно обновление. Без sudo:

odbcinst -j
-bash: /usr/local/bin/odbcinst: No such file or directory

С судо

sudo odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

1 ответ1

1

Проверьте /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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .