Conexión a PosgreSql

No puedo acceder a la base de datos.

Les cuento un poco la historia. Inicialmente migre una aplicación hecha con la versión anterior de XOJO a WEB 2.0, funcionando todo bien, incluso el acceso a los datos en la nube y local. El día de ayer comencé a modificar la aplicación mencionada.

Ahora no puede acceder a la base de datos. La única diferencia entre el antes y ahora, es tener 3 bases de datos en una computadora SQL Server, Postgres y MySQL.

La conexión es la siguiente, dentro de el evento opening:
if DBlink = nil then
DBLink = New PostgreSQLDatabase

DBlink.host = “localhost”
DBlink.Port = 5432
DBlink.DatabaseName = “JFC_Database”
DBlink.Username = “postgres”
DBlink.Password = “Password”

If DBlink.Connect = false Then
Messagebox (“Se ha perdido o no se ha podido establecer la conexión con la base de datos.”+EndOfLine+EndOfLine+“Revise su conexión a internet.”)
Else
lConnected = True
End If
end if

Sospechando que quizá la conexión con Postgres, lo verifique accediendo por ODBC, use Valentina Studio, y otro lenguaje de programación. Todos funcionaron bien.

¡Solicito ayuda!
¿Alguien sabe la razón por la que no puede funcionar?
Me parece de lo mas raro que antes si podía realizar la conexión y ahora no.

Es una laptop con Windows, donde se encuentra la base de datos local.

Hola Jose

Te levanta algun error o simplemente no se conecta?

Simplemente no se conecta.

Tristemente, no manda ningún error.
Es importante indicar, la condición se cumple correctamente y envía el mensaje.
Messagebox (“Se ha perdido o no se ha podido establecer la conexión con la base de datos.”+EndOfLine+EndOfLine+“Revise su conexión a internet.”)

Intenta la conexión dentro de un try catch:

try
  dblink.connect
 catch e as DatabaseException
   messagebox( e.message)
 end 

A ver que error te levanta si es que levanta uno

Mensaje:

SCRAM authentication requires libpq version 10 or above

También verifique lo que sucede si usa API1 en esta parte, puede haber un error que no genere excepciones por bug.

If  not dblink.Connect Then

  If dblink.Error Then

     MsgBox("Error: " + dblink.ErrorMessage)

  End If

End If

Edición: publiqué al mismo tiempo que recibiste el mensaje de error.

Esto es un error en el password

Hola Rick !!!
No manda el mensaje de error.
Pero con la opción de Héctor, usando TRY CATCH, provoca que truene el código y manda el siguiente mensaje:

SCRAM authentication requires libpq version 10 or above

SCRAM necesita una lib actualizada por Xojo en lo plugin Postgresql . Probablemente Wayne eludió el problema de autenticación utilizando el método anterior, cambiando el v10+ SCRAM (Salted Challenge Response Authentication Mechanism) al MD5 menos seguro en pg_hba.conf Tenga en cuenta que su autenticación debe ser compatible con el cifrado almacenado actual, o antes de intentarlo de nuevo, debe cambiar el método de cifrado (password_encryption) y cambiar la contraseña deseada (comando psql \password) para almacenar una nueva y correcta.

Mil gracias a Héctor y Rick por sus respuestas !!!

No esperaba este problema. Efectivamente actualice la versión de Postgres.

2 Likes