Pergunta

Eu estou tentando conectar um Banco de dados Oracle 11g XE em execução no windows a partir de uma remota Ubuntu 14.04 server usando PDO_OCI em php.Eu segui este guia http://gist.github.com/tassoevan/10392954 (inúmeras vezes) e continuo recebendo o seguinte erro:

não pode encontrar o driver

No entanto, quando me chamar PDO::getAvailableDrivers() dá-me este:

Array ( [0] => mysql [1] => oci [2] => sqlite )

Nota:oci não estava lá antes de eu segui o guia no link acima.

Todos os outros tutoriais que eu poderia encontrar eram basicamente a mesma coisa.

Eu tenho o Oracle instant client instalado (versão 11.1).A versão mais recente não foi mesmo recebendo o driver para mostrar na lista de drivers disponíveis.

Também sei que o driver que é utilizado este método é mais antiga, mas não há guias passo a passo sobre como fazê-lo funcionar com a mais recente de uma.Eu sou novo para Bancos de dados Oracle, bem como o php, então, passo a passo ajuda seria muito apreciada.

ATUALIZAÇÃO:Eu descobri o problema de driver.Foi no meu código php, e algo muito bobo.Estou postando para o benefício dos outros.

Meu código original tinha "OCI" em letras maiúsculas quando a configuração de conexão.

$tns = "  
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myIP)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )
       ";

try{
$pdo = new PDO('OCI:dbname='.$tns ,'username','password'); // Capital 'OCI' here is WRONG so changed to 'oci:dbname='
} catch(PDOException $e){
    echo $e->getMessage();
}

print_r(PDO::getAvailableDrivers());

No entanto, estou tendo problemas ao consultar o Banco de dados.Parece que nada está acontecendo.Eu tenho permitido a porta 1521 no firewall do Windows para entrada e saída.Alguma sugestão?

Aqui é o meu código php:

$stmt = $pdo->prepare("SELECT * FROM `PDO`;");
$stmt->execute();
$result = $stmt->fetchColumn(0);
echo $result;

Tabela PDO só tem uma coluna com uma linha.

O banco de dados Oracle precisa ser configurado para permitir conexões remotas?

Foi útil?

Solução

Havia dois problemas com o meu código PHP.1) a forma como O DOP conexão foi iniciada estava incorreto ...veja atualização no post original.Que resolveu o meu problema de driver.

2) o Oracle não parece como o backtick personagem, ao contrário do MySQL.Então eu tive que removê-los da minha consulta com este aspecto

$stmt = $pdo->prepare("SELECT * FROM PDO"); // Originally was SELECT * FROM `PDO`
$stmt->execute();
$result = $stmt->fetchColumn(0);
echo $result; 

Isso resolveu o meu consulta ao banco de dados do problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top