es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AWS Lambda – No se puede abrir la biblioteca ‘FreeTDS’

Estoy enfrentando un problema con la configuración de FreeTDS en AWS Lambda. Actualmente estoy atascado con este error.

[ERROR] Error: ('01000', "[01000] [unixODBC][Driver Manager]No se puede abrir la librería 'FreeTDS': archivo no encontrado (0) (SQLDriverConnect)")

Mi configuración es la siguiente. El paquete Zip se construye usando Cloud9. El archivo lbtdsodbc.so está presente en el directorio .ini especificado.

Directorio desde el cual compilé esas dependencias (./configure, make, make install):

user@user:/tmp/lambda_2 $ ls -la
total 12
drwxrwxr-x  9 ec2-user ec2-user  144 Dec  3 17:36 .
drwxrwxrwt 22 root     root     4096 Dec  3 17:36 ..
drwxrwxr-x  2 ec2-user ec2-user   97 Dec  2 22:01 bin
drwxrwxr-x  7 ec2-user ec2-user   67 Dec  2 22:15 freetds
drwxrwxr-x  2 ec2-user ec2-user  210 Dec  2 22:01 include
drwxrwxr-x  3 ec2-user ec2-user  287 Dec  2 22:01 lib
drwxrwxr-x  2 ec2-user ec2-user    6 Dec  2 22:01 ODBCDataSources
-rw-rw-r--  1 ec2-user ec2-user  150 Dec  3 17:17 odbc.ini
-rw-rw-r--  1 ec2-user ec2-user  130 Dec  3 17:29 odbcinst.ini
drwxrwxr-x  3 ec2-user ec2-user   88 Dec  3 15:25 python
drwxrwxr-x  3 ec2-user ec2-user   17 Dec  2 22:01 share

odbc.ini

[FreeTDS]
Driver = FreeTDS
Description = Controlador alternativo para MS SQL Server
Trace = N
#Server = ntmachine.domain.com
#Port = 1433
TDS Version = 7.3

odbcinst.ini

[FreeTDS]
Description = FreeTDS
Driver = /lambda_2/freetds/lib/libtdsodbc.so
#Setup = ./freetds/lib/libtdsodbc.so
#UsageCount = 1

El paquete Zip creado con zip -r9 tiene la estructura anterior de -ls.

Fragmento de código en Python:

conn = pyodbc.connect(f'DRIVER=FreeTDS;SERVER={self.server};PORT=1433;DATABASE={self.database};UID={self.username};PWD={self.password};TDS_Version=7.3;')

¡Se agradecerá cualquier ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema radica en que el controlador FreeTDS no es encontrado por el administrador de controladores ODBC. En el archivo odbcinst.ini, la ubicación del controlador se especifica como /lambda_2/freetds/lib/libtdsodbc.so, pero en la estructura de archivos mostrada, el directorio FreeTDS se encuentra en /tmp/lambda_2/freetds/.

    Para solucionar el problema, intenta actualizar la ubicación del controlador en el archivo odbcinst.ini para que apunte a la ruta correcta: /tmp/lambda_2/freetds/lib/libtdsodbc.so. Una vez actualizado el archivo, intenta ejecutar nuevamente el fragmento de código Python.

    Si el problema persiste, verifica que el rol de ejecución de la función Lambda tenga permisos para acceder al archivo del controlador FreeTDS en la ubicación especificada.

    Además, asegúrate de que el paquete freetds-dev esté instalado en tu entorno Cloud9 para compilar las dependencias. Para instalar el paquete freetds-dev, ejecuta el siguiente comando:

    sudo yum install -y freetds-devel
    

Comments are closed.