Banco de Dados [ReSoLvIdO]

21 respostas
pedroroxd

Pessoal, estava procurando um host na web que aceitasse MySQL...

Axei um que chama steadywebs.com...
Criei um banco de dados lá que chama androider_local e fui fazer a conexão, só para testar:

public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Connection connection = null;

        String driverName = "org.gjt.mm.mysql.Driver";
        Class.forName(driverName);
        connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com/androider_local", "androider_pepe", ""); //senha
    
    }

Deu esse erro na linha do connection= ...:
[color=red]Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.[/color]

[color=red]Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure[/color]

Olha a print screen do site, vejam se tem algo errado
[img]http://tibiaevents.webs.com/img.png[/img]

21 Respostas

Adelar

Pode ser que o banco não esteja setado na porta padrão (3306).

Att.

adriano_si

Passa a porta [3306]

[EDIT] - O Driver seta a porta padrão se não a informarmos ???

Achei esse nome de Driver meio estranho também… http://www.guj.com.br/articles/7

Abs []

pedroroxd

Adelar:
Pode ser que o banco não esteja setado na porta padrão (3306).

Att.


Onde eu troco isso?

Adelar

adriano_si:
Passa a porta [3306]

[EDIT] - O Driver seta a porta padrão se não a informarmos ???

Achei esse nome de Driver meio estranho também… http://www.guj.com.br/articles/7

Abs []


Sim, ele escolhe a porta padrão. Não conheço também este driver.

Att.

Adelar

pedroroxd:
Adelar:
Pode ser que o banco não esteja setado na porta padrão (3306).

Att.


Onde eu troco isso?

Seria isso na linha 6:

connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com:3000/androider_local", "androider_pepe", ""); //senha

Considerando que é a porta 3000.

[]'s.

romarcio

adriano_si:
Passa a porta [3306]

[EDIT] - O Driver seta a porta padrão se não a informarmos ???

Achei esse nome de Driver meio estranho também… http://www.guj.com.br/articles/7

Abs []

Acredito que o nome do drive que vc está usando, está errado, troca por esse: com.mysql.jdbc.Driver

Outra coisa, tenta configurar com o IP(74.114.116.118) do servidor e não com o nome(steadywebs.com).

pedroroxd

Trokei o nome do driver, não funcionou...
Colokei com IP 74.114.116.118, não funcionou...
Colokei porta :3000 com ip e com nome, e também não funcionou...

Vou passar a senha para vocês testarem ae, já que eu não uso o domínio pra nada:
public static void main(String[] args) throws ClassNotFoundException, SQLException {  
		        Connection connection = null;  
		        Class.forName("com.mysql.jdbc.Driver"); //org.gjt.mm.mysql.Driver 
		        connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com:3000/androider_local", "androider_androider", "");  
		        System.out.println("Conectou");
    
	    }
EDIT
Adelar

A porta que passei era somente um exemplo. Me lembro que em uma vez que o MySQL trocou de versão houve alteração da porta em um dígito… tenta usar 3305 ou 3307 para ver se dá certo. Caso não dê certo verifique nas configurações do MySQL para confirmar qual porta é.

[]'s

pedroroxd

Testei as 2 portas e não deu certo…

Procurei no phpmyadmin pra ver onde dava pra ver a porta e não consegui?
Pode me ajudar?

EDIT
Vlw!

Adelar

Clica em “Variáveis e configurações do servidor” no parâmetro port está marcando a porta como 3306. Melhor remover do post anterior o usuário e senha antes que alguém acesse e cause danos.

Att.

pedroroxd

Blz, vlw… Editei o post…
Então, já que está marcada porta 3,306 o que está dando erro??

(Nem tem como trocar a porta pelo jeito né?)

Connection connection = null; Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com/androider_local", "androider_androider", ""); System.out.println("Conectou");
Está tudo certo então…
A única coisa que não tenho certeza é se jdbc:mysql://steadywebs.com/ mesmo…
Onde vejo isso?

romarcio

pedroroxd:
Blz, vlw… Editei o post…
Então, já que está marcada porta 3,306 o que está dando erro??

(Nem tem como trocar a porta pelo jeito né?)

Connection connection = null; Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com/androider_local", "androider_androider", ""); System.out.println("Conectou");
Está tudo certo então…
A única coisa que não tenho certeza é se jdbc:mysql://steadywebs.com/ mesmo…
Onde vejo isso?

To procurando aqui mas não to achando. Uma vez eu coloquei um site em PHP num servidor desse tipo, e se não me engano, na url do site tinha que passar também o usuario da conta. Da uma tentada.

pedroroxd

Lá no site tá escrito assim:

Servidor: steadywebs.com (Localhost via UNIX socket)

Usuário: androider_androider@localhost

Esse localhost precisa colokar também??
Quando conecta pelo phpmyadmin não precisa nao… é só colocar androider_androider…
vlws

Adelar

pedroroxd:
Blz, vlw… Editei o post…
Então, já que está marcada porta 3,306 o que está dando erro??

(Nem tem como trocar a porta pelo jeito né?)

Connection connection = null; Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://steadywebs.com/androider_local", "androider_androider", ""); System.out.println("Conectou");
Está tudo certo então…
A única coisa que não tenho certeza é se jdbc:mysql://steadywebs.com/ mesmo…
Onde vejo isso?


Isto depende do que o driver aceita e é mais ou menos padrão… acho que está certo. No caso “steadywebs.com” poderia ser também o IP da máquina. Caso necessite da porta daí esta é passada como “steadywebs.com:3306” ou se for pelo IP “192.168.0.1:3306”, por exemplo.

Vi que outra causa para este problema é que pode não estar configurado o acesso externo ao banco. Para isto tem que configurar nos arquivos do MySQL e reiniciar o banco. O servidor está em Linux, então segue um exemplo de como configurar o acesso neste caso… http://leandron.wordpress.com/2009/02/09/configurando-o-mysql-para-acesso-externo/.

[]'s

Adelar

Isto aparece porque o servidor da aplicação PHP está rodando na mesma máquina que o servidor MySQL.

pedroroxd
  • Acesse o arquivo /etc/mysql/my.cnf em seu editor preferido (vi, gedit, kate?) com um usuário que tenha permissões de escrita no arquivo
    sudo vim /etc/mysql/my.cnf

  • Localize a seguinte linha
    bind-address = 127.0.0.1

  • Altere a linha para
    # bind-address = 127.0.0.1

Reinicie o servidor MySQL
sudo /etc/init.d/mysql restart

Mas como que eu faço isso quando stá online?
Pelo phpmyadmin dá?

Adelar

Achei que não dava pelo PhpAdmin, mas parece que dá tbm. Segue como fazê-lo http://wiki.locaweb.com.br/pt-br/Como_fa%C3%A7o_para_restringir_ou_liberar_IP_para_acesso_remoto_ao_phpMyAdmin%3F.

[]'s

pedroroxd

“Clique em Usuários e Permissões;”

Não aparece isso lá não O_o

pedroroxd

Tem outra maneira sem ser pelo por esse caminho?
Pq não achei nada que ta falando naquele site

[EDIT]

Ou melhor, alguém já usou um servidor que não dê isso?
To procurando um servidor free que aceite mysql e não dê esse pau…

Eu usava uolhost, e fazia a mesma coisa que estou fazendo e nunca deu problema, mas era pago… Alguém conhece um free??
Achei uma lista na internet enorme, mas nunca dá certo… A maioria é bloqueada para brasileiros, e outros é propaganda enganosa…

Adelar

Nunca usei desta forma… servidores on-line para persistência de dados. Se não me engano a Amazon tem algo neste sentido, mas não é em MySQL.
Um motivo para não dar certo é que estes servidores podem estar configurados somente para aceitar conexões de aplicações que estão rodando neles próprios, não permitindo conexões externas.

[]'s

romarcio

Adelar:
Nunca usei desta forma… servidores on-line para persistência de dados. Se não me engano a Amazon tem algo neste sentido, mas não é em MySQL.
Um motivo para não dar certo é que estes servidores podem estar configurados somente para aceitar conexões de aplicações que estão rodando neles próprios, não permitindo conexões externas.

[]'s

To achando que é isso mesmo.

Parece que o google tem um banco de dados free para essa finalidade.

Criado 4 de janeiro de 2011
Ultima resposta 5 de jan. de 2011
Respostas 21
Participantes 4