Configurar Python como 32bit en Snow Leopard

Magna sorpresa el encontrarme que MySQL no funcionaba con Python tras actualizar a MacOSX 10.6 (en adelante SnowLeopard, que queda más kul), y mayor sorpresa aún descubrir que era debido a que se está ejecutando como aplicación de 64bit. Para hacer que Python se ejecute por defecto como una aplicación de 32bit simplemente cambiamos la configuración con el siguiente comando:

$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
(esto lo cambia sólo para el usuario en cuestión; para hacerlo en todo el sistema usaremos la clave '/Library/Preferences/com.apple.versioner.python')

Et voilá. También podemos hacerlo a través de una variable de entorno (cuyo valor toma preferencia sobre la clave anterior):

$ export VERSIONER_PYTHON_PREFER_32_BIT=yes

Configurar MySQL como demonio en MacOSX

El paquete de MySQL para MacOSX nunca me ha funcionado bien a la primera. La base de datos funciona siempre, pero por alguna razón que no me quiero molestar en comprender, en ocasiones no me instala el script para lanzar la aplicación como demonio. Aquí os detallo los pasos que he seguido, una vez harto de lanzarlo a mano desde la línea de comandos.

Lo primero, comprobar que mysql está correctamente instalado y tenéis un link a la carpeta de mysql en «/usr/local/mysql» apuntando a la versión que queráis que se ejecute.

Bajaros el siguiente archivo de configuración para el launchd de MySQL (cortesía de TomatoCheese) y lo movéis a la carpeta «/Library/LaunchDaemons». Tened en cuenta que tendréis que actuar como superusuarios para muchas de estas acciones.

Cambiamos los permisos del fichero:

sudo chown root /Library/LaunchDaemons/com.mysql.mysqld.plist

Y probamos que funciona correctamente:

sudo launchctl load /Library/LaunchDaemons/com.mysql.mysqld.plist

Ya está.

MySQL lock table size error

Aquí va el truco del día (bueno, quizás del trimestre). Si trabajáis con tablas grandes en MySQL, pongamos por ejemplo de unos 23 millones de registros aunque creo que por encima del millón y medio puede empezar a suceder, puede que os encontréis con el siguiente error:

ERROR 1206 (HY000): The total number of locks exceeds the lock table size

Entonces exclamas: «WTF? No se supone que MySQL es la panacea?«. Tranquilos, porque tiene solución. El problema viene derivado del uso del formato InnoDB de tablas que utiliza una tabla temporal de locks cuyo tamaño por defecto es de 8 megabytes. Simplemente editamos el fichero de configuración MySQL (/etc/mysql/my.cnf o dónde lo tengáis) y cambiamos/añadimos la siguiente variable en la sección [mysql]:

[mysqld]
innodb_buffer_pool_size=256M

Si os parece un salto grande pasar de 8 a 256, lo bajáis un poco.

PD: cómo mola la nueva interfaz de administración de wordpress, aunque el azul clarito este es un poco…