Erro bizarro no postgre[RESOLVIDO]

5 respostas
D

pessoaal estou fazendo uma consulta em uma tabela dismembrando as colunas e inserindo em outra,sendo comeca as a insercoes,ate q chega uma linha q gera esse erro, e as vezes o erro ja da d cara sem inserir nada gostraia de saber o q pode ser

org.postgresql.util.PSQLException: A tentativa de conexão falhou.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:137)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
	at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
	at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
	at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:29)
	at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
	at org.postgresql.Driver.makeConnection(Driver.java:386)
	at org.postgresql.Driver.connect(Driver.java:260)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at TesteBanco.getConn(TesteBanco.java:18)
	at TesteBanco.principal(TesteBanco.java:98)
	at TesteBanco.main(TesteBanco.java:12)
Caused by: java.net.BindException: Address already in use: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at org.postgresql.core.PGStream.<init>(PGStream.java:62)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:77)
	... 12 more

5 Respostas

S

Posta seu código aí

D
import java.sql.*;
import java.util.*; 


public class TesteBanco 
{
	
	public String sql;
	
	public static void main(String[] args) 
	{
		new TesteBanco().principal();
	}
	
	public static Connection getConn() throws ClassNotFoundException, SQLException
	{
		Class.forName("org.postgresql.Driver");
		Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.253:5432/sisref","grinder","grinder123*");
		return con;
	}
	
	public void principal()
	{
		try
		{	
			 sql = "delete from imports.tipocliente";
			getConn().createStatement().executeUpdate(sql);
			
			Statement st = getConn().createStatement();
			
			 sql = "select ci.rota_nome,ci.rota_num " +
			              " from ci_tabelao ci " +
			              " join master.centrais c on ci.codcentral = c.codcentral " +
			              " where c.mnemonico in (  select distinct l.cpamae " +
												  " from imports.acpa a " +
												  " join imports.lcg l on a.telchave = l.telchave " +
												  " where a.telchave not in ( " +
																			 " select distinct a.telchave " +
																			 " from imports.acpa a " +
																			 " join ci_tabelao ci on a.telchave = ci.rota_nome " +
																			 " join imports.lcg l on a.telchave = l.telchave " +
																			 " join master.centrais c on ci.codcentral = c.codcentral and l.ddd = c.cn " +
																			 " where ci.rota_nome !~* '[A-Z]' " +
																		   ") " +
											   ") order by ci.rota_nome,ci.rota_num"; 
							
			//System.out.println(sql);		 
		    ResultSet rs = st.executeQuery(sql);
		    while(rs.next())
		    { if(rs.getString("rota_nome").length() < 8 && 
	    		   rs.getString("rota_num").length() >= 8)
	    		{
	    			String rn[] = rs.getString("rota_num").split(",");
	    			for(int i = 0;i < rn.length;i++)
	    			{
	    				if(rn[i].trim().length() == 8)
	    				{
	    					System.out.println(rn[i]);
	    				}
	    			}
	    			for(int i = 0;i < rn.length;i++)
	    			{
	    				
	    				if(rn[i].trim().length() == 8)
	    				{
	    					sql = "insert into imports.tipocliente(rota_nome,rota_num)" +
    						"values('"+rs.getString("rota_nome")+"','"+rn[i].trim()+"');";
    				        System.out.println(sql); 
    				        getConn().createStatement().executeUpdate(sql);
	    				}

	    			}
	    		}
	    }
		}
		catch(Exception e)
		{
			System.out.println("sql com erro = " + sql);
			e.printStackTrace();
		}
	}
E

Acredito que o erro ocorre quando cai no if dentro do for getConn().createStatement().executeUpdate(sql); Ele abre uma nova conexão, isto pode estar interferindo na conexão anterior!

Tenta fazer uma modificação no getConn para ao invés de todas vez criar uma nova conexão retorne a conexão aberta!

L

E assim…vc está criando um monte de conexão, chega uma hora que o banco não aceita mais tanta conexão
Cada vez que vc dá um rs.next…tá criando uma nova conexão… muda o teu método getConn ou cria uma variável global de conexão

D

entendi dei esse mole mesmo vou ver aki,obrigado !!!

Criado 16 de maio de 2008
Ultima resposta 16 de mai. de 2008
Respostas 5
Participantes 4