Ошибка 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.

Другие вопросы по тегам