Ошибка SQL: [unixODBC][Driver Manager] Имя источника данных не найдено, и драйвер по умолчанию не указан
Я запускаю PHP-скрипт на сервере RedHat с использованием драйверов Teradatas ODBC.
<?php
$conn = odbc_connect("Teradata", "username", "password");
$result = odbc_exec($conn, 'SELECT count(*) FROM table');
while (odbc_fetch_row($result)) {
for ($i = 1; $i <= odbc_num_fields($result); $i++) {
echo "Result is ".odbc_result($result,$i);
}
}
?>
Я бегал strace
на сценарии и обнаружил, что он ищет .ini
файлы, которые содержат информацию DNS в неправильном месте, а также помещают .
перед именем файла.
open("/home/a-taslam/.odbcinst.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
Нужно искать файл на /opt/teradata/client/ODBC_64/odbcinst.ini
Кто-нибудь знает, как это исправить?
1 ответ
Решение
Вам просто нужно установить и экспортировать ODBCSYSINI
переменная окружения -
export ODBCSYSINI=/opt/teradata/client/ODBC_64/
или же
set ODBCSYSINI=/opt/teradata/client/ODBC_64/ ; export ODBCSYSINI
Примечание - эта переменная среды должна быть установлена для php
когда он работает, будь php
наследует настройку из среды запуска, или вы добавляете эту настройку в файлы конфигурации PHP.