Conexión PostgreSQL 64 bits

Buen día a todos,

Estoy intentando hacer la conexión a base de datos externa, en este caso PostgreSQL instalada en una máquina de 64 bits, bajé los drivers del odbc en versión de 64 bits y los instalé correctamente, los agregué con el administrador de conexiones a bases de datos, en su versión para 64 bits.

Generó la DSN pero me marca un error “Driver not loades Driver not loaded”.

Probé con la versión de 32 bits volviendo a registrarla y pasa lo mismo.

Desde equipos con SO a 32 bits no hay problema, funciona perfectamente.

Buscanto en internet encuentro que dicho problema tiene que ver con QT y entiendo que Velneo está basado en gran parte en QT, los equipos desde donce me debo conectar a la base de datos de PostgreSQL son todos a 64 bits.

¿Qué puedo hacer al respecto, alguna idea o sugerencia?

Anton.

Hola anton.

Yo no he usado PostgreSQL, pero te puedo dar alguna pista por mi experiencia en su momento con MySQL.

  • Con Velneo puedes acceder a Bases de datos externas de 2 formas: usando ODBC o usando drivers nativos.
  • El error “Driver not loaded Driver not loaded” solo se produce cuando intentas acceder de forma nativa.
  • Los supuestos drivers nativos (SQLite, MySQL y PostgreSQL) están disponibles en la subcarpeta /plugins/sqldrivers de la carpeta donde esté instalado vClient o vServer.
  • He dicho supuestos drivers nativos porque, por ejemplo, para MySQL necesitamos el verdadero driver nativo libmysql.dll que tenemos que descargar desde la página del fabricante.
  • Seguramente para PostgreSQl pasa lo mismo, necesitarás alguna librería libpq.dll nativa (en 32bits por supuesto) que tendrás que copiar a la carpeta del vClient o del vServer según ejecutes los procesos en 1º plano o 3º plano. Si tienes instalado en tu equipo el cliente PostgreSQL de 32bits, en alguna carpeta (bin) tendrás las librerías. Vas copiando al directorio de instalación de vClient los ficheros .dll hasta que desaparezca el error.

Si quieres acceder a través de ODBC y un DSN con la definición de la conexión, no es necesario nada de lo anterior.

  • Con ODBC es suficiente con que instales el driver ODBC de 32 bits para PostgreSQL
  • Define el DSN desde el panel de control y recuerda que en sistemas de 64bits el acceso es %SystemRoot%\syswow64\odbcad32.exe
  • Prueba que el DSN funciona correctamente a través del botón <Test> que suelen tener los drivers ODBC
  • En Velneo ya solo es necesario indicar con el comando BD: Crear manejador(hnd, ODBC(compatible Microsoft SQL Server), <DSN>,…) el nombre del DSN

En resumen, y a falta de que alguién con experiencia en PostgreSQL te responda:

  • Velneo es una plataforma de 32bits, por lo tanto e independientemente de dónde lo instalamos, solo se puede comunicar con librerías (.dll, odbc, …) de 32bits, olvídate de momento de PostgreSQL 64 bits, aunque pronto dispondremos de Velneo 64bits.
  • El acceso a bases de datos externas siempre es más rápido y fiable a través del driver nativo, pero requiere conocimientos de las librerías necesarias, consulta a Soporte de Velneo para una mejor información al respecto.
  • El acceso a bases de datos externas a través de ODBC en entornos Windows es sencillo y rápido, pero requiere la instalación y administración de los drivers ODBC y DSN en el usuario final, lo cual a veces es complicado.

Saludos
Paco Satué

Gracias Seh

A fin de cuentas funcionó con el driver nativo de V7, en lugar de escribir una DSN rellené los campos del comando y funcionó perfectamente.

Deberían ser un poco más claros para estos casos porque se llega a perder tiempo probando e instalando los drivers de las páginas oficiales de las Bases de Datos.

Muchas gracias por tus comentarios.

Anton.

Hola Anton.

Me alegro que haya funcionado, efectívamente los DSN son solo para el ODBC. Seguramente el plugin de QT encuentra las librerías necesarias porque tienes instalado el cliente de PostgreSQL…
Por lo tanto recuerda que si lo vas a ejecutar en otra máquina, ésta deberá tener las librerias de PostgreSQL accesibles mediante el Path correspondiente.

Saludos
Paco Satué

Gracias seh

Efectivamente, resulta que era tema de copiar algunas librerias dll al directorio de instalación de la plataforma en sí, pero lo que no dice en ningún lado y he tenido que descubrirlo a prueba y error es lo siguiente, lo cual con gusto posteo para que ya los demás no tengan este problema. Ojo, aplica solo para windows, en mac funciona bien sin hacer nada, en linux no lo he probado.

Las librerías que son indispensables para que funcionen las conexciones a BD Postgre son:

libeay32.dll
libiconv-2.dll *
libintl-8.dll *
libpq.dll
ssleay32.dll

Estas deben estar instaladas en el directorio de Velneo, en x86, la pega viene porque aunque tengas instalado el postgre las que marque con asterisco no vienen en el directorio bin de postgre.

Para obtener estas librerias, las consigues de el paquete de instalación de postgre odbc, se llama edb_psqlodbc.exe, se toman del directorio que crea al instalarse y se copian al de Velneo.

Y así, sin más ni más ya funciona sin necesidad de definir origenes de datos vía odbcadd32.exe, ni crear dsn, ni nada.

Saludos y gracias por tu invaluable apoyo.

PD. El resto es solo adjuntar dichas librerias al proyecto V7, y en los on-init verificar si existen y si no copiarlas de cacherun al directorio de Velneo.

Anton

Esto quiere decir que se puede usar base de datos externa y olvidarnos de los puestos vserver ?

Cuando esto suceda vuelvo a velneo…
Aunque me conformaria con la base de datos express 512 mb. por el momento

Mira este video
https://www.youtube.com/watch?v=iObuChc6C-8

Un saludo,
http://vgestoradmin.blogspot.com/
vgestor@gmail.com

vgestor,

Lamento informarte que no es así, no te puedes olvidar de los puestos vServer de ningúna manera, es simple, te podrás conectar de mil maneras a bases de datos externas, pero solo para enviar y traer información, más que eso no te sirve para nada, no puedes mostrar esos datos a menos que los grabes en tablas V7.

Creo que nunca volverás a Velneo, una pena, tú te lo pierdes.

Anton.

Buenas tardes, Anton …
Estoy intentado conectar con el postgreSQL y no lo consigo ni con el ODBC (la prueba de este si que funciona) ni de manera nativa.
¿Serías tan amable de pasarme un ejemplo de como establecer la conexión utilizado la conexión nativa?.
Con la explicación que he encontrado no lo consigo.

Saludos
Vicente Linares