Impossibile connettersi a PostgreSQL
Nel tentativo di connetermi ad un server PostgreSQL versione 8 mi è comparso il seguente errore:
con il seguente driver http://www.postgresql.org/ftp/projec...ndry/npgsql/
L'errore era dovuto alla configurazione di PostgreSQL, in pratica non permetteva la connessione remota del client.
Per abilitare la connessione bisogna specificare la rete di provenienza dei client nel file [FolderInstallazione]\data\pg_hba.conf, ad esempio:
inoltre bisogna verificare che PostgreSQL sia in ascolto sul corretto IP. Per far questo edita il file [FolderInstallazione]\data\postgresql.conf e modifica la chiave listen_addresses, ad esempio
in alternativa per rimanere in ascolto su tutti gli IP:
{"Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host."}
il codice che ho usato è:C#
using System;
using System.Collections.Generic;
using System.Data;
using Npgsql;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//NpgsqlEventLog.Level = LogLevel.Debug;
//NpgsqlEventLog.LogName = @"C:\NpgsqlTests.LogFile.txt";
//NpgsqlEventLog.EchoMessages = true;
PostgeSQL-style connection string
string connstring = "Server=MIOSERVER;Port=5432;User Id=MIOUTENTE;Password=MIAPASSWORD;Database=MIODATABASE;";
using (Npgsql.NpgsqlConnection cnn = new Npgsql.NpgsqlConnection(connstring))
{
cnn.Open();
string sql = "SELECT * FROM channels";
DataSet ds = new DataSet();
Npgsql.NpgsqlDataAdapter da = new Npgsql.NpgsqlDataAdapter(sql, cnn);
ds.Reset();
da.Fill(ds);
DataTable dt = ds.Tables[0];
}
}
}
L'errore era dovuto alla configurazione di PostgreSQL, in pratica non permetteva la connessione remota del client.
Per abilitare la connessione bisogna specificare la rete di provenienza dei client nel file [FolderInstallazione]\data\pg_hba.conf, ad esempio:
Text
host all all 10.5.30.0/24 trust
Text
listen_addresses='192.168.111.4 192.168.111.5'
Text
listen_addresses='*'