2009-08-19 53 views
7

Un colega de este mensaje de error al intentar utilizar MySQLdb de Django:Django - MySQLdb: Símbolo no encontrado: _mysql_affected_rows

[...] 
ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: 
Error loading MySQLdb module: dlopen(/Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so, 2): 
Symbol not found: _mysql_affected_rows 
Referenced from: /Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so Expected in: dynamic lookup 

Está usando OS X 10.5, Python 2.5 (llegando con OS X), MySQL 5.1 & MySQLdb 1.2.3c1.

¿Alguna idea de cómo atacar esto?

Respuesta

0

Sí, el huevo MySQLDb se compiló con una versión diferente de libmysqlclient que la versión presente en el sistema. Necesita obtener un huevo (desinstalar el anterior) o construir MySQLDb desde cero para compilarlo contra la biblioteca presente en su sistema.

No sé por qué, pero creo que su colega podría estar interesado en esta pregunta:

Configuring Django to use remote mysql server?

6

podría ser mejor si se instala MySQL y es enlaces de Python desde cero, utilizo el siguiente pasos cada vez que necesito MySQLdb en OS X 10.4 o 10.5:

  1. Instalar MySQL para su sistema, el programa de instalación DMG deben ser suficientes

  2. La ubicación predeterminada de MySQL estará en algún lugar: /usr/local/mysql-5.0.45-osx10.4-i686. De /usr/local/mysql/lib, cree un enlace simbólico:

    ln -s ../../mysql-5.0.45-osx10.4-i686/lib mysql

  3. Descargar el MySQLdb source y descomprimirlo

  4. Editar el archivo site.cfg bajo el directorio de MySQLdb sin envasar, en comentario la registry_key y establecer mysql_config a:

    mysql_config = /usr/local/mysql-5.0.45-osx10.4-i686/bin/mysql_config

  5. seguir con los paquetes de Python regulares a construir dentro del directorio MySQLdb:

    sudo python setup.py install

  6. Si todo está bien por encima, MySQLdb prueba en un nuevo terminal:

    python -c "import MySQLdb"

El arriba no debería devolver nada si tiene éxito. El ejemplo anterior muestra OS 10.4 y MySQL 5.0, sustitúyalos con la versión de herramientas adecuada.

+0

No funciona en 10.6 –

+0

El mysql 10.6 dmg aún no ha salido, una vez que se ha lanzado, dele otro giro. –

+1

Gracias por esta solución. Casi funcionó en mi sistema (OSX 10.7). Sin embargo, necesito agregar el indicador ** - arch x86_64 ** al compilador y a los marcadores del enlazador. Así es como necesito cambiar ** setup_posix.py ** del paquete MySQLdb-python: en la sección donde se construyen 'ext_options' cambié' extra_compile_args = extra_compile_args' a 'extra_compile_args = extra_compile_args + ['-arch' , "x86_64"] 'y' extra_link_args = extra_link_args' a 'extra_link_args = extra_link_args + ['-arch'," x86_64 "]' – spassig

0

Tuve problemas con la solución de Thierry en Python de 32 bits (2.6.5) en OS X 10.6.

La actualización a la versión de 64 bits de Python 2.7 me arregló el problema.

0

instrucciones del Thiery funcionaba bien para mí con el MySQL 10.6 dmg y MySQLdb ver 1.2.3

Ayuda a comenzar con una pizarra limpia, así que asegúrese de desinstalar las primeras versiones de MySQL.Mira esta publicación para la ayuda de desinstalación How do you uninstall MySQL from Mac OS X?

¡Gracias!

1

Fue complicado y difícil pero funcionó en MacOSX Lion.

que va a utilizar:

Xcode 
Brew 
Port 
Pip 

asegúrese de que tiene instalado Xcode (4.x), y su Mac está configurado para encontrar los archivos ejecutables, ya que será utilizada por MacPorts durante el proceso de de instalar mysql-python.

Asegúrese de que las herramientas de línea de comandos se instalan Xcode

inicio de aplicaciones Xcode >> >> preferencias de descarga >> ficha Componentes >> Herramientas de línea de comandos >> haga clic en Instalar

ejecute los siguientes comandos desde la terminal .

xcodebuild -version

si se ejecutó en este error

/usr/bin/xcodebuild -version Error: No developer directory found at /Developer

intenta ejecutar

/usr/bin/xcode-select
esto actualizará la ruta del directorio desarrollador.

Luego hay que cambiar manualmente a la nueva Xcode dir instalación en/Aplicaciones:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app 

Ref

desinstalación MySQL [copia de seguridad que los datos antes de hacerlo!].

sudo rm /usr/local/mysql 
sudo rm -rf /usr/local/mysql* 
sudo rm -rf /Library/StartupItems/MySQLCOM 
sudo rm -rf /Library/PreferencePanes/My* 
edit /etc/hostconfig and remove the line MYSQLCOM=-YES- 
sudo rm -rf /Library/Receipts/mysql* 
sudo rm -rf /Library/Receipts/MySQL* 
sudo rm -rf /var/db/receipts/com.mysql.* 

Uso brew instalar MySQL de nuevo:

brew install mysql 

usted podría encontrarse con este error.

Error: Cannot write to /usr/local/Cellar 

la fix.

debe estar listo para ir ahora.

sudo port install py27-mysql 

pip install mysql-python 

python -c "import MySQLdb" 

si no ve ningún error MySQLdb está instalado.

-1
sudo apt-get install python-mysqldb 

asegurarse de que debería instalado correctamente

o puede utilizar otra alternativa como easy_install

0

intenta ejecutar:

easy_install -U distribute 
pip install --upgrade mysql-python 

Nota: Si tiene cualquier error de falta símbolos durante la compilación, necesita tener librerías de desarrollo mysql para compilarlo.

En Linux es fácil para instalarlo:

sudo apt-get install mysql-devel 

o:

sudo yum install mysql-devel 

En Mac es probable que tenga que descargar MySQL Connector y entonces puede que tenga que pasar en un --with-mysql -libs opción para apuntar al directorio cuando las librerías C están desempaquetadas. O puede intentar colocar las bibliotecas en el directorio predeterminado:/usr/lib64/mysql

Cuestiones relacionadas