我正在使用 M2 芯片 的 Macbook AIR 上使用 MySQL 为我的 Django 项目设置本地工作区。所有配置均使用 OSX 迁移助手从我的旧 Macbook Pro(配备 core i7)迁移。
我在尝试在本地运行服务器时遇到问题,即
python manage.py runserver
。错误消息是:
File "/Users/.../.venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
import MySQLdb as Database
File "/Users/.../.venv/lib/python3.10/site-packages/MySQLdb/__init__.py", line 24, in <module>
version_info, _mysql.version_info, _mysql.__file__
NameError: name '_mysql' is not defined
mysql -u root -p
mysqlclient
已安装,版本为2.1.1
MySQLdb
时,Python 似乎很难使用 dlopen
打开“c 编译”(不确定这到底是如何调用的)文件,或者打开但有错误?错误为:Python 3.10.6 (v3.10.6:9c7b4bd164, Aug 1 2022, 17:13:48) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
File "/Users/.../.venv/lib/python3.10/site-packages/MySQLdb/__init__.py", line 18, in <module>
from . import _mysql
ImportError: dlopen(/Users/.../.venv/lib/python3.10/site-packages/MySQLdb/_mysql.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_mysql_affected_rows'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/.../.venv/lib/python3.10/site-packages/MySQLdb/__init__.py", line 24, in <module>
version_info, _mysql.version_info, _mysql.__file__
NameError: name '_mysql' is not defined
python -m pip download mysqlclient==2.1.1 --no-binary :all:
,没有运气。谢谢您的提前!
我也遇到这个问题了
MacOS 13.4.1 Python 3.10.0
我不小心使用brew升级到MySQL 8.1,libmysqlclient.21.dylib不再存在,而是libmysqlclient.22.dylib。我的 mysql 和 mysql-client 都在使用这个新的 dylib 文件。
看来mysqlclient==2.2.0仍在寻找libmysqlclient.21.dylib。
我尝试恢复到 MySQL 8.0.34,但现在我的数据库失败,表示由于升级而无法再恢复: “[InnoDB] 无法在版本 80100 构建的数据目录上启动服务器版本 80034。不支持降级”
--
我已经在 PyMySQL github 上展开了关于它的讨论: https://github.com/PyMySQL/mysqlclient/discussions/652