解决 Mac Django 连接Mysql 出现 image not found 问题

发布于:2024-06-07 ⋅ 阅读:(131) ⋅ 点赞:(0)

最近在使用 Django 框架,因为升级到4.2版本了,对应的本机 Mysql 5.7 就不适用了,于是升级到了 Mysql 8.0,写好代码之后出现如下错误:

在这里插入图片描述
仔细分析一下错误的描述:

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so, 2): 

Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib

Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.so

Reason: image not found

可以看到的是 Library not loaded:, 库文件并未加载,库文件地址为:/usr/local/mysql/lib/libmysqlclient.20.dylib, 直接在命令行执行:

open /usr/local/mysql/lib/

得到如下界面:
在这里插入图片描述

可以看到,在 mysql 文件夹下,只存在libmysqlclient.21.dylib 文件,并不存在libmysqlclient.20.dylib,这既是问题的症结所在了,我需要加载的是20文件,但是现在只存在21文件,然后我们来找一下我系统中,dylib到底有哪些?使用命令行:

sudo find /usr/local -name "libmysqlclient.*.dylib"

找到了如下图:
在这里插入图片描述
我发现目前只存在我的mysql-8.0.12文件夹下面,但是在 Django 框架下,没办法去更改加载21文件,那么能不能生成一个20文件,来内容来使用21文件替代呢?正好Mac 电脑下有这种命令:

ln -s [目标文件或目录] [符号链接名]

ln 是一个在 Unix 和类 Unix 系统(包括 macOS 和 Linux)中非常常用的命令行工具,用于创建链接。

  1. 符号链接(软连接):

符号链接类似于 Windows 中的快捷方式。它是一个特殊类型的文件,包含一个文本指针指向另一个文件或目录的路径。

创建符号链接的命令格式为:

ln -s [目标文件或目录] [符号链接名]

例如,如果你想创建一个指向 /usr/local/mysql/lib/libmysqlclient.20.dylib 的符号链接,你可以使用:

ln -s /usr/local/mysql/lib/libmysqlclient.20.dylib ~/libmysqlclient.20.dylib

这个命令会在你的根目录创建一个 libmysqlclient.20.dylib 的符号链接,它指向 /usr/local/mysql/lib/libmysqlclient.20.dylib。

  1. 硬链接
    硬链接直接指向文件系统中的物理位置,不像符号链接那样仅仅是路径的引用。每个文件至少有一个硬链接(即其本身的文件名),添加的每个础链接都可以视为文件的另一个有效名称。硬链接对文件夹是不支持的。(和复制还是有些区别的)

创建硬链接的命令格式为:

ln [目标文件] [硬链接名]

例如,在同一目录下要为 /path/to/file.txt 创建一个硬链接,可以使用:

ln /path/to/file.txt /path/to/new_link.txt

那我为了解决这个问题,我只需要将我的21文件链接到20文件即可:

sudo ln -s /usr/local/mysql-8.0.12-macos10.13-x86_64/lib/libmysqlclient.21.dylib 
/usr/local/mysql/lib/libmysqlclient.20.dylib

执行之后,再次查看对应文件夹:
在这里插入图片描述
可以看到,这里多了一个链接文件,然后重试项目:
在这里插入图片描述
发现链接成功! 搞定,如果有问题,可以随时wx:javainstalling,代号:Django!


网站公告

今日签到

点亮在社区的每一天
去签到