Ik ben wat aan het experimenteren met C# (Visual Studio .NET) en postgresql, maar stoot op een vreemd probleem.
In de postgresql log krijg ik volgende melding:
De postgresql server draait op dezelfde pc als waar ik de C#-code op ontwikkel en test. Dit is een Windows XP machine met de Windows firewall uitgeschakeld en geen andere firewall producten aanwezig die mogelijk poorten blokkeren. De postgresql server draait op de standaard poort 5432 en werkt wel degelijk. Via pgAdmin kan ik zonder problemen op de server en databases, gebruikersn tables,... aanmaken, aanpassen en verwijderen. Aangezien pgAdmin ook via poort 5432 verbindt (als ik netstat mag geloven) en geen foutmeldingen in de postgresql log nalaat sta ik voor een raadsel wat er mis loopt.
Het is niet dat de C# totaal geen verbinding met de server krijgt, want als ik bijvoorbeeld een verkeerde databasenaam opgeef dan krijg ik netjes "FATAL: database "blah" does not exist" in de postgresql log te zien. Teken dat er wel degelijk communicatie tussen beiden is.
Maar wat gaat er dan mis?
C#:
Dit stukje elementaire code waar mijns inziens niets mis mee is geeft me steevast de melding1
2
3
4
5
6
7
| NpgsqlConnection sqlConnection = new NpgsqlConnection("Server=localhost;Port=5432;User Id=test;Password=test;Database=test"); string sSql = "SELECT id FROM test"; NpgsqlCommand myCommand = new NpgsqlCommand(sSql); sqlConnection.Open(); myCommand.ExecuteNonQuery(); sqlConnection.Close(); |
Deze melding krijg ik op de regel "myCommand.ExecuteNonQuery();". Als ik deze in comment zet is de melding weg, maar ik denk niet dat daar een probleem is: ExecuteNonQuery() krijgt gewoonweg geen verbinding met de database, dus het lijkt erop dat de Open() niet werkt (alhoewel die geen foutmelding teruggeeft).An unhandled exception of type 'System.InvalidOperationException' occurred in npgsql.dll
Additional information: The Connection is not open.
In de postgresql log krijg ik volgende melding:
Hier ligt hoogst waarschijnlijk het probleem, maar ik begrijp de oorzaak niet goed.LOG: could not receive data from client: No connection could be made because the target machine actively refused it.
De postgresql server draait op dezelfde pc als waar ik de C#-code op ontwikkel en test. Dit is een Windows XP machine met de Windows firewall uitgeschakeld en geen andere firewall producten aanwezig die mogelijk poorten blokkeren. De postgresql server draait op de standaard poort 5432 en werkt wel degelijk. Via pgAdmin kan ik zonder problemen op de server en databases, gebruikersn tables,... aanmaken, aanpassen en verwijderen. Aangezien pgAdmin ook via poort 5432 verbindt (als ik netstat mag geloven) en geen foutmeldingen in de postgresql log nalaat sta ik voor een raadsel wat er mis loopt.
Het is niet dat de C# totaal geen verbinding met de server krijgt, want als ik bijvoorbeeld een verkeerde databasenaam opgeef dan krijg ik netjes "FATAL: database "blah" does not exist" in de postgresql log te zien. Teken dat er wel degelijk communicatie tussen beiden is.
Maar wat gaat er dan mis?
A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.