【问题标题】:Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib and Reason image not found未加载库:/usr/local/opt/mysql/lib/libmysqlclient.21.dylib 和未找到原因图像
【发布时间】:2018-07-17 06:39:55
【问题描述】:
Traceback (most recent call last):
  File "/Applications/MAMP/htdocs/Minor Project/xyz.py", line 5, in <module>
    import config
  File "/Applications/MAMP/htdocs/Minor Project/config.py", line 5, in <module>
    import MySQLdb
  File "/Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/_mysql.so, 2): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib
  Referenced from: /Users/brijeshlakkad/Library/Python/2.7/lib/python/site-packages/_mysql.so
  **Reason: image not found**

当我使用“brew install mysql”安装 mysql 时,将执行文件。当我执行 brew install mysql 时,有两个不同的 mysql 分别运行。我执行了这个文件,然后所有数据都存储在 local mysqlphpmyadmin mysql 不同。

【问题讨论】:

  • 您是否真的在使用长死连接器MySQL-python,又名MySQLdb?如果是这样,那只适用于 MySQL 5.x(并且只在 5.0 中进行过全面测试)。你是故意使用它吗?或者您是否正在使用现代连接器之一,例如 pymysqlmysqlclient,可以配置为安装 MySQLdb 的直接替代品?
  • 同时,我根本不明白你问题的后半部分,但如果你安装了两个不同的 MySQL 数据库并且你连接到错误的数据库,那可能是你的问题连接命令,但实际上没有看到你正在使用的命令,也不知道你是如何设置两个数据库的,甚至开始调试它几乎是不可能的。
  • 执行“brew install mysql”后,创建了两个不同的mysql:1. Cellar/mysql 2. Mamp mysql phpmyadmin
  • 我不知道“Mamp mysql phpadmin”是什么意思。但是brew install mysql 只是将 MySQL 的一个副本安装到Cellar/mysql,然后将一堆符号链接放入链接到该酒窖的/usr/local/bin
  • pymysql 解决了我的问题,谢谢先生。

标签: python mysql homebrew mysql-python


【解决方案1】:

简而言之,您的问题是您正在尝试使用古老的 mysql-python 库,也就是 MySQLdb。该库在 MySQL 5.1 左右被废弃,因此它不支持 MySQL 6 及更高版本,并且您可能拥有 MySQL 8.0,因此它正在寻找的共享库不存在,因此出现 image not found 错误。

Homebrew是否包含一个 mysql@5.5 包,我认为它有一个名称正确的 dylib,可能足够老,可以使用 mysql-python,如果你真的很想走那条路,但它不会被支持。或者您可以下载 MySQL 5.0 或 5.1 源并自己构建它(没有任何早于 5.6 的 Mac 二进制文件可以在当前 macOS 上运行),这绝对可以。

但更好的解决方案是使用仍在维护的库。不幸的是,那里有很多选择,但我的印象是大多数人使用三个大选项之一:

  • mysqlclientmysql-python 的一个分支,它绑定到当前版本的 C 库(@​​987654328@ 或从 MySQL/Oracle 网站下载安装程序)。
  • PyMySQL 是用纯 Python 重写的,甚至不需要 C 库。
  • MySQL Connector/Python 是 MySQL/Oracle 从头开始​​编写的新实现。 (您可能需要带有这个的 Oracle 安装程序。)

PyMySQL 是比mysqlclient 更好的直接替代品,它与宇宙中的其他一切都很好,而且它是编写良好的代码,如果你有问题很容易调试......但它可以很慢。除非您要维护一大堆现有代码,否则您通常不需要完美的直接替换,只需一个非常接近的connect 调用并支持所有 DB-API 2,以及mysqlclient 涵盖了这一点。

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2014-02-24
    • 1970-01-01
    • 2016-02-19
    • 2021-07-14
    • 2020-05-11
    • 2017-04-01
    • 2020-03-19
    相关资源
    最近更新 更多