mayo 27, 2009

MySQL-python 5 en sistema con mysql 4

Si tenemos corriendo un mysql versión 4 en un sistema y queremos realizar una conexión a un mysql5 encontraremos errores del tipo:
Client does not support authentication protocol requested by server; consider upgrading MySQL client

En caso de que no sea posible actualizar en el propio sistema a la versión 5 la versión antigua de mysql se hace necesario utilizar compilar el conector con librerias mas actuales, para ello descargamos la última versión que encontremos de mysql ya compilada mismamente.

Para el caso de MySQL-python es necesario instalar desde fuentes y modificar la dirección de nuestros binarios de mysql5 en la configuración "MySQL-python-1.2.2/site.cfg":
[options]
# embedded: link against the embedded server library
# threadsafe: use the threadsafe client
# static: link against a static library (probably required for embedded)

embedded = False
threadsafe = True
static = True

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /usr/src/mysql5/mysql-5.1.34-linux-x86_64-glibc23/bin/mysql_config

Lo configuramos como estatico e indicamos donde anda el mysql_config que acabamos de descargar.

Si ahora intentamos arrancar cualquier script encontraremos que python no encuentra las librerias de la nueva versión:
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

Tan solo tenemos que copiarlas a nuestro /usr/lib64/:
cp /usr/src/mysql5/mysql-5.1.34-linux-x86_64-glibc23/lib/libmysqlclient_r.so.16 /usr/lib64/

# ls -la /usr/lib64/|grep mysql
-rw-r--r-- 1 root root 460632 Sep 3 2008 libmysqlclient.a
-rwxr-xr-x 1 root root 897 Sep 3 2008 libmysqlclient.la
lrwxrwxrwx 1 root root 24 Sep 3 2008 libmysqlclient.so -> libmysqlclient.so.12.0.0
lrwxrwxrwx 1 root root 24 Sep 3 2008 libmysqlclient.so.12 -> libmysqlclient.so.12.0.0
-rwxr-xr-x 1 root root 277520 Sep 3 2008 libmysqlclient.so.12.0.0
-rw-r--r-- 1 root root 472412 Sep 3 2008 libmysqlclient_r.a
-rwxr-xr-x 1 root root 951 Sep 3 2008 libmysqlclient_r.la
lrwxrwxrwx 1 root root 26 Sep 3 2008 libmysqlclient_r.so -> libmysqlclient_r.so.12.0.0
lrwxrwxrwx 1 root root 26 Sep 3 2008 libmysqlclient_r.so.12 -> libmysqlclient_r.so.12.0.0
-rwxr-xr-x 1 root root 285840 Sep 3 2008 libmysqlclient_r.so.12.0.0
-rwxr-xr-x 1 root root 5326100 May 27 10:29 libmysqlclient_r.so.16

comentarios: