Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Conexão com Oracle 11g

1 de Abril de 2013, 10:49 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 116 vezes

Alguém sabe me dizer se o framework FormDin prevê conexão com o banco de dados Oracle 11g, e em caso positivo tem como mandar um exemplo do arquivo config_conexao.php? Pelos exemplos de arquivos de conexão que baixei do site só temos exemplo de conexão com MYSQL, POSTGRES, SQLLITE e SQLSERVER.

Obrigado!

Autor: miguel Patrocinio


99 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    1 de Abril de 2013, 14:58

     

    Miguel,

    segue o exemplo para instalação do oracle XE:

    // oracle
    define('BANCO','ORACLE');
    define('HOST','192.168.1.140');
    define('PORT','1521');
    define('SERVICE_NAME','XE');
    define('USUARIO','root');
    define('SENHA','123456');

    claro que o php deve estar configurado corretamente para se conectar com o oracle, pdo_oci funcionando.

    Abraço.

    • 627deb302718fab26e0859ab3843cb50?only path=false&size=50&d=404miguel Patrocinio(usuário não autenticado)
      1 de Abril de 2013, 15:07

       

      Luis, Obrigado pelo retorno!

      Abço

      • 4cd8eda92be79356cc63beee3a95fb53?only path=false&size=50&d=404jardson rodrigues(usuário não autenticado)
        2 de Abril de 2013, 12:24

         

        Caros,

        Segui a dica do Luis fiz o teste e retornou

        Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\base\classes\webform\TPDOConnection.class.php on line 490

        alguém tem uma dica

        abraços 

        • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
          4 de Abril de 2013, 21:09

           

          Jardson,

          este erro está ocorrendo poque a conexão não foi estabelecida.

          Faça o teste de conexão sem utilizar a class TPDOConnection do formdin primeiro, assim voce pode testar seu ambiente.

          Veja os exemplos:  www.​php.​net/​manu​al/e​n/re​f.pd​o-oc​i.ph​p

          <?php
          $tns = " 
          (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = yourip)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVICE_NAME = orcl)
              )
            )
                 ";
          $db_username = "youname";
          $db_password = "yourpassword";
          try{
              $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
          }catch(PDOException $e){
              echo ($e->getMessage());
          }
          ?>

          Abraço.

          • 627deb302718fab26e0859ab3843cb50?only path=false&size=50&d=404miguel Patrocinio(usuário não autenticado)
            8 de Abril de 2013, 13:23

             

            Luis Eugenio, obtive o mesmo erro que o Jardson, a princípio fiz um teste de conexão pelo PHP e funcionou, mas vou repetir o teste com o código passado por você para confirmar se realmente não há algum problema de configuração.
            Fiquei ocm uma dúvida no arquivo PHP.ini, liberei as extensões abaixo, mas não sei se faltou (ou tem algo a mais) alguma extensão:

            arquivo php.ini
            ;PHPExt
            ;extension=php_oci8.dll
            extension=php_oci8_11g.dll
            extension=php_pdo_oci.dll
            extension=php_pdo.dll

            config_conexao.php

            define('BANCO','ORACLE');
            define('HOST','169.254.13.125');
            define('PORT','1521');
            define('SERVICE_NAME','XE');
            define('USUARIO','MIGUEL');
            define('SENHA','21321');

            Rodei os comandos abaixo para retornar os drives instalados e testar a conexão:
            foreach(PDO::getAvailableDrivers() as $driver)
                echo $driver, '<br>';
            TPDOConnection::test();

            Com o retorno:
            oci
            mysql
            sqlite

            Fatal error: Call to a member function prepare() on a non-object in C:\Arquivos de programas\EasyPHP-12.1\www\base\classes\webform\TPDOConnection.class.php
            on line 490

          • 627deb302718fab26e0859ab3843cb50?only path=false&size=50&d=404miguel Patrocinio(usuário não autenticado)
            8 de Abril de 2013, 15:14

             

            Luis Eugenio,

            Reproduzi o ambiente para testar a conexão, conforme código passado por você, e a conexão fechou com sucesso:

            <?php
            $tns = " 
            (DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.103.112)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVICE_NAME = XE)
                )
              )
                   ";
            $db_username = "MIGUEL";
            $db_password = "21321";
            try{
                $conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
             echo 'CONECTADO!!';
            }catch(PDOException $e){
                echo ($e->getMessage());
            }
            ?>

            Resultado no Browser:

            CONECTADO!!

            Alguma idéia do que pode estar ocorrendo?

            • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
              9 de Abril de 2013, 12:10

               

              Miguel,

              acho que descobrio problema.

              Adicione a seguinte linha no arquivo de configuração.

              define('DATABASE','ORACLE');

              Vamos ver.

              Abraço.

              • 627deb302718fab26e0859ab3843cb50?only path=false&size=50&d=404miguel Patrocinio(usuário não autenticado)
                9 de Abril de 2013, 12:44

                 

                Agora mudou o erro, o arquivo config_conexao.php

                //oracle
                define('BANCO','ORACLE');
                define('HOST','10.5.103.112');
                define('PORT','1521');
                define('SERVICE_NAME','XE');
                define('USUARIO','sys');
                define('SENHA','21321');
                define('DATABASE','ORACLE');

                Erro:

                Erro PDO: SQLSTATE[HY000]: General error: 923 OCIStmtExecute: ORA-00923: palavra-chave FROM n?o localizada onde esperada (ext\pdo_oci\oci_statement.c:148)

                Sql: SELECT 1 as teste

                Parametros: Array ( )  

                • 627deb302718fab26e0859ab3843cb50?only path=false&size=50&d=404miguel Patrocinio(usuário não autenticado)
                  9 de Abril de 2013, 13:26

                   

                  Luis Eugenio ,

                  Problema resolvido e conexão com Oracle estabelecida. Verifiquei no arquivo TPDOConnection.class.pxp já havia a string de conexão correta para o Oracle, comentei a anterior e descomentei a correta e funcionou:

                  //$res = self::executeSql( 'SELECT 1 as teste' );

                    $res = self::executeSql('SELECT 1 as teste from dual');

                  Obrigado pela ajuda!

                   

Essa comunidade não possui posts nesse blog