Django - MySQLdb: Symbol not found: _mysql_affected_rows

9 浏览
0 Comments

Django - MySQLdb: Symbol not found: _mysql_affected_rows

一个同事在尝试使用Django的MySQLdb时收到了以下错误信息:

[...]
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

他使用的是OS X 10.5、Python 2.5(随OS X一起提供)、MySQL 5.1和MySQLdb 1.2.3c1。

有没有办法解决这个问题?

0
0 Comments

问题:Django - MySQLdb: Symbol not found: _mysql_affected_rows

原因:MySQLDb egg的编译版本与系统中存在的libmysqlclient版本不一致。需要获取正确的egg(卸载之前的版本)或者从头开始构建MySQLDb,使其与系统中的库进行编译。

解决方法:请参考以下链接:Configuring Django to use remote mysql server?

0
0 Comments

Django - MySQLdb: Symbol not found: _mysql_affected_rows问题的出现原因:

该问题的出现是因为在使用Django和MySQLdb时,链接到MySQL时出现了一个符号未找到的错误。具体原因可能是MySQL绑定在安装过程中出现了一些问题。

解决方法:

解决该问题的方法是重新从头安装mysql和其Python绑定。下面是在OS X 10.4或10.5上安装MySQLdb时使用的步骤:

1. 首先安装MySQL,可以从MySQL官网下载dmg安装文件进行安装。

2. 打开终端,进入/usr/local/mysql/lib目录,并创建一个软链接,命令如下:

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

3. 下载MySQLdb源码,并解压缩。

4. 在解压后的MySQLdb目录下找到site.cfg文件,打开并编辑该文件。将registry_key这一行注释掉,并将mysql_config的值设置为MySQL安装目录下的mysql_config文件的路径,例如:

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

5. 继续在MySQLdb目录下执行以下命令,以构建并安装Python包:

   sudo python setup.py install
   

6. 如果上述步骤都顺利完成,可以在新的终端中运行以下命令来测试MySQLdb是否安装成功:

   python -c "import MySQLdb"
   

上述命令如果没有输出结果,则说明安装成功。上述示例中显示的是OS 10.4和MySQL 5.0的情况,具体版本可根据实际情况进行替换。

需要注意的是,如果使用的是OSX 10.7系统,还需要在编译和链接标志中添加"-arch x86_64"标志。具体做法是找到MySQLdb-python包中的setup_posix.py文件,在构建ext_options的部分,将extra_compile_args和extra_link_args的值分别修改为以下内容:

extra_compile_args = extra_compile_args + ['-arch', 'x86_64']
extra_link_args = extra_link_args + ['-arch', 'x86_64']

以上就是解决Django - MySQLdb: Symbol not found: _mysql_affected_rows问题的方法。按照上述步骤重新安装MySQLdb,可以解决链接到MySQL时出现的符号未找到错误。

0
0 Comments

在使用Django和MySQLdb时,可能会遇到一个问题:Symbol not found: _mysql_affected_rows。下面是这个问题出现的原因和解决方法。

原因:

这个问题可能是由于安装MySQL-python时出现了一些错误或者配置问题导致的。

解决方法:

以下是解决该问题的步骤:

1. 确保你已经安装了Xcode(4.X)并且你的Mac已经配置好了找到可执行文件,因为在安装mysql-python的过程中,Macports会使用到它。同时也确保安装了Xcode的命令行工具(Command Line Tools)。

2. 打开Xcode应用程序,进入Preferences,点击Components选项卡,然后点击Command Line Tools,最后点击Install按钮进行安装。

3. 在终端中运行以下命令检查Xcode的版本:

   xcodebuild -version
   

4. 如果出现错误信息"/usr/bin/xcodebuild -version Error: No developer directory found at /Developer",尝试运行以下命令更新开发者目录路径:

   /usr/bin/xcode-select
   

5. 手动切换到新的Xcode安装目录,将以下命令中的"/Applications/Xcode.app"替换为你的Xcode安装路径:

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

6. 卸载MySQL(在此之前请备份你的数据):

   sudo rm /usr/local/mysql
   sudo rm -rf /usr/local/mysql*
   sudo rm -rf /Library/StartupItems/MySQLCOM
   sudo rm -rf /Library/PreferencePanes/My*
   sudo nano /etc/hostconfig(删除包含MYSQLCOM=-YES-的行)
   sudo rm -rf /Library/Receipts/mysql*
   sudo rm -rf /Library/Receipts/MySQL*
   sudo rm -rf /var/db/receipts/com.mysql.*
   

7. 使用brew重新安装MySQL:

   brew install mysql
   

8. 安装py27-mysql:

   sudo port install py27-mysql
   

9. 使用pip安装mysql-python:

   pip install mysql-python
   

10. 运行以下命令检查是否成功安装了MySQLdb:

    python -c "import MySQLdb"
    

如果没有看到任何错误信息,则表示成功安装了MySQLdb。

0