Erro SQL: [unixODBC] [Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado

1

Estou executando um script PHP em um servidor RedHat usando drivers ODBC do Teradatas.

<?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);
    }
}

?>

Eu executei strace no script e descobri que ele está procurando os arquivos .ini que contêm as informações de DNS no local errado, além de colocar um . antes do nome do arquivo.

open("/home/a-taslam/.odbcinst.ini", O_RDONLY) = -1 ENOENT (No such file or directory)

Ele deve estar procurando o arquivo em /opt/teradata/client/ODBC_64/odbcinst.ini

Alguém sabe como corrigir isso?

    
por ChristopherStrydom 20.08.2015 / 16:23

1 resposta

2

Você só precisa definir e exportar a variável de ambiente ODBCSYSINI -

export ODBCSYSINI=/opt/teradata/client/ODBC_64/

ou

set ODBCSYSINI=/opt/teradata/client/ODBC_64/ ; export ODBCSYSINI

Nota - essa variável de ambiente deve ser definida para php quando estiver em execução, se php herdar a configuração de seu ambiente de inicialização ou se você incluir essa configuração nos arquivos de configuração do PHP.

    
por 01.09.2015 / 04:40