Skip to main content

MySQLdb常见问题

生成错误

ld:fatal:library -lmysqlclient_r:not found

mysqlclient_r是线程安全库。它不是在所有平台或所有安装,可见。您将需要重新配置site.cfg(在MySQLdb-1.2.1和更新版本),以具有threadsafe = False。

mysql.h:没有这样的文件或目录

这几乎总是意味着你没有安装开发包。在某些系统上,用于各种事情(如MySQL)的C头文件作为一个独立的软件包分发。你需要弄清楚是什么,并安装它,但通常名称以-devel结尾。

另一种可能性:一些旧版本的mysql_config行为奇怪,可能会引起一些路径名称,引起混淆MySQLdb-1.2.0。 1.2.1解决这些问题。如果你在编译命令中看到类似于’/usr/local/include/mysql’的东西,这可能是个问题,但它不应该再发生了。

ImportError

ImportError:没有名为_mysql的模块

如果你看到这,可能是你在安装MySQLdb时做错了;重新读取(或读取)README。 _mysql是与MySQL客户端库连接的低级C模块。

过去的各种版本的MySQLdb已经在“怪异”平台上构建问题; “weird”在这种情况下意味着“不是Linux”,虽然通常在Unix/POSIX平台上没有问题,包括BSD和Mac OS X. Windows已经有更多的问题,部分是因为在Windows安装中没有可用的 mysql_config 的MySQL。 1.2.1解决了大多数(如果不是全部)这些问题,但是您仍然必须编辑一个配置文件,以便设置知道在哪里找到MySQL和要包括哪些库。

ImportError:libmysqlclient_r.so.14:无法打开共享对象文件:没有这样的文件或目录

.so之后的数字可能会有所不同,但这意味着您有一个版本的MySQLdb针对一个版本的MySQL编译,现在试图针对不同的版本运行它。共享库版本在主要版本之间往往会发生变化。

解决方案:重建MySQLdb,或获取匹配版本的MySQL。

另一个可能导致这种情况:MySQL库可能不在您的系统路径。

解决方案:

  • 设置LD_LIBRARY_PATH环境变量,使其包含MySQL库的路径。

  • 对于静态链接,在site.cfg中设置static = True

  • 重新配置系统,使MySQL库位于默认加载程序路径上。在Linux中,您可以编辑/etc/ld.so.conf并运行ldconfig。有关Solaris,请参阅 链接器和库指南

    ImportError:ld.so.1:python:fatal:libmtmalloc.so.1:DF_1_NOOPEN标记的对象可能不是dlopen()’ed

这是一个奇怪的从Solaris。这是什么意思?我不知道。但是,如果Python和MySQL之间存在某种编译器或环境不匹配,则可能发生这种情况。例如,在一些商业系统上,您可能有一些代码使用自己的编译器编译,而其他东西则使用GCC编译。它们不总是啮合在一起。遇到这种情况的一种方法是从不同的供应商获取二进制包。

解决方案:从源代码重建Python或MySQL(或两者)。

ImportError:dlopen(./_ mysql.so,2):找不到符号:_sprintf $ LDBLStub引用自:./_mysql.so预期在:dynamic lookup

这是一个来自Mac OS X.它似乎是一个编译器不匹配,但这次在两个不同版本的GCC。似乎几乎每个主要版本的GCC都会改变ABI的某些原因,所以使用GCC-3.3和GCC-4.0编译的链接代码可能会有问题。

我的数据消失了! (或不会走开!)

从1.2.0开始,MySQLdb根据DB-API标准(PEP-249)的要求默认禁用自动提交。如果您使用InnoDB表或其他类型的事务表类型,则需要在关闭连接之前执行connection.commit(),否则不会将任何更改写入数据库。

相反,你也可以使用connection.rollback()抛弃自上次提交以来所做的任何更改。

重要说明:某些SQL语句(特别是类似于CREATE TABLE的DDL语句)是非事务性的,因此无法回滚,它们会导致挂起的事务提交。

其他错误

OperationalError:(1251,’客户端不支持服务器请求的认证协议;考虑升级MySQL客户端’)

这意味着您的服务器和客户端库不是相同的版本。更具体地说,这可能意味着你有一个4.1或更新的服务器和4.0或更旧的客户端。您可以升级客户端,或尝试 密码哈希作为MySQL 4.1 中的一些解决方法。

其他资源

  • 帮助论坛。请在发布前搜索。

  • 谷歌

  • 阅读README!

  • 阅读用户指南

  • 阅读 PEP-249