Erro bizarro no postgre[RESOLVIDO]

5 respostas
dicabeca

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

somma

Posta seu código aí

dicabeca
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-cowboy

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

dicabeca

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