Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rickusa

Conexao PDO no Servidor nao Conecta ?

Recommended Posts

Ola pessoal.

E o seguinte e a primeira vez que estou colocando o site no servidor, ate ai tudo bem, ja bati cabeca bastante, mais nao estou conseguindo fazer a conexao com o Banco, eis o meu PDO de conexao:

 

 
   function conectar(){
        
        try {
            
            $pdo = new PDO('mysql:host=dbmedical123.db.11767918.hostedresource.com;dbname=dbmedical123', 'dbmedical123', '');
            return $pdo;
            
            
        }  catch (PDOException $ex){
            
            echo 'Erro ao Conectar no Servidor, Erro: ' . $ex->getMessage();
        }
       
    }
 
 

 

Depois de demorar muito tempo esta me retornando este erro:

 

Erro ao Conectar no Servidor, Erro: SQLSTATE[HY000] [2002] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

 

Ja tentei de tudo, com certeza e alguma coisa errada na string de conexao, mais o que sera ?

 

Agradeco a atencao e presteza de todos, pois esta ajuda e muito bem vinda sendo que e o primeiro web site que finalmente estou desenvolvendo aqui nos EUA, depois de muita batalha, um abraco a todos, valew....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou colocar localhost ou o ip do servidor remoto no host?

dbmedical123.db.11767918.hostedresource.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado amigo pela ajuda, mais ja tentei colocar, estava lendo um artigo na net, e o mesmo diz que o servidor windows do godaddy.com nao tem suporte ao PDO, somente Linux teria este suporte, sera que isto e verdade ?

Se mais alguem tiver uma dica por favor ficarei muiiiiiiiiiiiito grato e assim que eu tiver a solucao vou com certeza postar aqui, um abraco a todos, Ricardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não sei dizer se a plataforma Windows da GoDaddy suporta PDO, mas por que você não solicita a migração para Linux?

 

O PHP roda com muito melhor desempenho em ambiente Linux, além de ter mais recursos disponíveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo obrigado, acabei de converser com o meu cliente e vamos modificar para Linux, vou ter que mudar alguma coisa no codigo ?

Eu estou utilizando PHP, JQuery e ajax, na verdade nao trago nada do banco sem usar o $.ajax().

 

Muiiiiiiiiiiito Obrigado pela sua atencao e presteza amigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem nada a ver Windows com PDO. No máximo porta no firewall. Mas aí o bloqueio também se daria no formato nativo.

 

Timeout geralmente o problema é endpoint offline. Não conexão recusada, o que discartaria o problema de firewall.

 

Exemplo com o seu próprio caso:

$ dig dbmedical123.db.11767918.hostedresource.com

; <<>> DiG 9.9.2-P1 <<>> dbmedical123.db.11767918.hostedresource.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19695
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;dbmedical123.db.11767918.hostedresource.com. IN	A

;; ANSWER SECTION:
dbmedical123.db.11767918.hostedresource.com. 21600 IN CNAME dbmedical123.db.11767918.fbc.hostedresource.net.
dbmedical123.db.11767918.fbc.hostedresource.net. 3600 IN A 68.178.216.75

;; Query time: 728 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Sep  9 13:46:00 2013
;; MSG SIZE  rcvd: 149

IP final = 68.178.216.75

 

Quando tentamos uma conexão via porta 80:

$ nc -vv 68.178.216.75 80
nc: connect to 68.178.216.75 port 80 (tcp) failed: Connection refused

Bastante atenção no retorno: connection refused. Isso indica que, ou não há um servidor web ativo ou o firewall não permite acesso externo a essa porta.

 

Por padrão, a porta de escuta do MySQL é 3306. Novo teste...

nc -vv 68.178.216.75 3306
nc: connect to 68.178.216.75 port 3306 (tcp) failed: Connection timed out

O que significa que a conexão não foi recusada, como no teste anterior. Mas também não houve resposta. É possível acessar o endpoint por essa porta, mas não tem nenhum processo que possa atender às solicitações.

 

Desde o MySQL 5.5, uma diretiva padrão foi trocada de [inline]skip-networking[/inline] para [inline]bind-address = 127.0.0.1[/inline].

 

A primeira permitia apenas acesso via sockets. O que é problemático no Windows. A segunda permite acesso pelo protocolo TCP, mas - por padrão - apenas dentro da própria máquina. Pode ser este o problema, ser necessário trocar a diretiva [inline]bind-address[/inline] para atender a qualquer IP mediante o valor [inline]0.0.0.0[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uauuuuu, grande ajuda amigo, mais entao nao tem nada a ver o PDO com Windows, certo, mais mesmo assim nao estou conseguindo mostrar os dados na tela, o timeout ainda e o problema, vou tentar mudar o OS para Linux vamos ver como vai ficar, mais se alguem mais tiver uma sujestao fico muito grato, grato tambem pela atencao e presteza do amigo que me respondeu, um abraco.



Opa agora o erro que aparece e este:

 

 

Erro ao Conectar no Servidor, Erro: could not find driver<br /> <b>Fatal error</b>: Call to a member function prepare() on a non-object in <b>D:\Hosting\11767918\html\config\DBConfiguracao.php</b> on line <b>26</b><br />


Este Seria a maneira de conectar sujerida pelo godday.com

 

 
 <?php
            //Variables for connecting to your database.
            //These variable values come from your hosting account.
            $hostname = "

dbmedical123.db.11767918.hostedresource.com

";
            $username = "

dbmedical123

";
            $dbname = "

dbmedical123

";

            //These variable values need to be changed by you before deploying
            $password = "your password";
            $usertable = "your_tablename";
            $yourfield = "your_field";
       
            //Connecting to your database
            mysql_connect($hostname, $username, $password) OR DIE ("Unable to
            connect to database! Please try again later.");
            mysql_select_db($dbname);

            //Fetching from your database table.
            $query = "SELECT * FROM $usertable";
            $result = mysql_query($query);

            if ($result) {
                while($row = mysql_fetch_array($result)) {
                    $name = $row["$yourfield"];
                    echo "Name: $name<br>";
                }
            }
            ?>
 

 

Caramba isso e MySQL e na verdade estou usando PDO ?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa agora o erro que aparece e este:

 

 

Erro ao Conectar no Servidor, Erro: could not find driver<br /> <b>Fatal error</b>: Call to a member function prepare() on a non-object in <b>D:\Hosting\11767918\html\config\DBConfiguracao.php</b> on line <b>26</b><br />

 

 

Couldn't find driver quer dizer que o driver MySQL para PDO não está instalado. Você pode obter a lista dos drivers disponíveis com [inline]print_r(PDO::getAvailableDrivers());[/inline]

Este Seria a maneira de conectar sujerida pelo godday.com

 

 

 
 <?php
            //Variables for connecting to your database.
            //These variable values come from your hosting account.
            $hostname = "

dbmedical123.db.11767918.hostedresource.com

";
            $username = "

dbmedical123

";
            $dbname = "

dbmedical123

";

            //These variable values need to be changed by you before deploying
            $password = "your password";
            $usertable = "your_tablename";
            $yourfield = "your_field";
       
            //Connecting to your database
            mysql_connect($hostname, $username, $password) OR DIE ("Unable to
            connect to database! Please try again later.");
            mysql_select_db($dbname);

            //Fetching from your database table.
            $query = "SELECT * FROM $usertable";
            $result = mysql_query($query);

            if ($result) {
                while($row = mysql_fetch_array($result)) {
                    $name = $row["$yourfield"];
                    echo "Name: $name<br>";
                }
            }
            ?>
 

Caramba isso e MySQL e na verdade estou usando PDO ?????

 

 

É, na verdade você estava tentando conectar com PDO sim, que é a forma recomendada. Toda vez que você acessa um mysql_qualquer_coisa no manual tem um alerta bem grande vermelho indicando que o uso dessa lib é desencorajado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E Pessoal a primeira vez e dificil !!!! hehehehe.

Consegui resolver o problema, eis as Solucoes:

 

1 - O Go Daddy sistema Operacional Windows NAO SUPORTA a Biblioteca PDO, tivemos que mudar para Linux

2 - Ao criar o DataBase, existe uma opcao Chamada Direct Access, voce tem que colocar para true ou Yes.

3 - A string de conexao devera ficar assim :

 

$pdo = new PDO('mysql:host=dbmedical123.db.11767918.hostedresource.com;dbname=dbmedical123', 'SeuDataBase', 'SuaSenha');

 

E Principalmente a Sua Funcao de Pesquisa no Banco de Dados devera ficar assim, claro alguem deve ter uma melhor maneira de implementar isto, mais por agora esta funcionando.

 

 
 /* Funcao para uma Listagem do Tipo Generica, basta informar o Nome da Tabela a ser Pesquisada. */
    function listar($tabela){
        
              
        try{
            
            $pdo = conectar();  
            
            $listar = ("SELECT * FROM $tabela");
          
            $prepare = $pdo->prepare($listar);
            
            $prepare->execute();
            
            return $prepare->fetchAll(PDO::FETCH_OBJ);
            
        }  catch (PDOException $e){
            
            echo 'A Error Occur During the Connection Process : ' + $e->getMessage();
        }
    }
 

 

Pessoal foi dificil mais eu quero mais uma vez agradecer a atencao e presteza de todos, um forte abraco a todos voces colegas ai do Brasil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.