当前位置: 首页 > news >正文

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

最近在使用 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.dylibReferenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/MySQLdb/_mysql.cpython-38-darwin.soReason: 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!

http://www.lryc.cn/news/365118.html

相关文章:

  • EitbaseEX香港业务开展,提升用户友好交易体验
  • ROS学习记录:自定义消息类型
  • 创新实训2024.06.06日志:部署web服务
  • 使用C++实现YOLO图像分类:从环境搭建到性能评估的完整指南
  • Linux中安装Docker,并使用Docker安装MySQL和Redis
  • 期货短线交易的核心技术是什么
  • VSCode+Vite+Vue3断点调试
  • RPC框架原理(一)
  • LCTF 2018 bestphp‘s revenge
  • MySQL主从搭建--保姆级教学
  • Modbus通信协议--RTU
  • 我是大学生,应该选系统运维方向,还是web开发方向?
  • Qt窗口与对话框
  • 【笔记】Windows 中 一键部署本地私人专属知识库:MaxKB + Docker + MaxKB docker + Ollama
  • 【Vue】scoped解决样式冲突
  • word模板内容替换
  • docker安装和使用
  • 【AIGC X UML 落地】通过多智能体实现自然语言绘制UML图
  • C++访问越界
  • MATLAB format
  • Face Forgery Detection by 3D Decomposition
  • socket网络编程——多进程、多线程处理并发
  • C++---模板进阶(非类型模板参数,模板的特化,模板分离编译)
  • 锂电池寿命预测 | Matlab基于SSA-SVR麻雀优化支持向量回归的锂离子电池剩余寿命预测
  • 整理好了!2024年最常见 20 道 Kafka面试题(十)
  • Paper Survey——3DGS-SLAM
  • 搜索与图论:深度优先搜索
  • AMD显卡和英伟达显卡哪个好?
  • 5.31.8 学习深度特征以实现判别定位
  • uniapp小程序多线程 Worker 实战【2024】