使用Django连接MySQL遇NotSupportedError:MariaDB版本过低
解决Django检测到低版本MariaDB的问题
问题核心
你遇到的错误是因为Django实际连接到了系统中旧版本的MariaDB(5.5.65),而非你通过Homebrew安装的高版本实例,导致版本不符合Django的最低要求(MariaDB 10.3+)。
解决方案步骤
1. 定位Homebrew安装的MariaDB路径
执行命令查看Homebrew安装的MariaDB具体位置:
brew info mariadb
输出中会包含类似/usr/local/Cellar/mariadb/[你的版本号]/bin的路径,记下这个路径。
2. 检查当前生效的数据库版本
执行以下命令确认系统当前调用的MariaDB版本:
mysql --version
如果显示的是5.5.65,说明旧版本的数据库优先级更高,需要调整环境变量。
3. 调整环境变量,优先使用Homebrew版本
根据你使用的Shell类型修改配置:
- Bash用户:编辑
~/.bash_profile
echo 'export PATH="/usr/local/Cellar/mariadb/[你的版本号]/bin:$PATH"' >> ~/.bash_profile source ~/.bash_profile
- Zsh用户:编辑
~/.zshrc
echo 'export PATH="/usr/local/Cellar/mariadb/[你的版本号]/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
替换命令中的[你的版本号]为brew info mariadb输出里的实际版本号。
4. 验证环境变量生效
重新执行mysql --version,确认输出的是Homebrew安装的高版本(10.3+)。
5. 重启Django服务器
关闭当前运行的Django服务器,重新启动即可解决版本不兼容的错误。
备选方案:直接指定数据库Socket路径
如果环境变量调整无效,可以在Django的settings.py中直接指定Homebrew版本MariaDB的Socket路径,通常路径为/usr/local/var/mysql/mysql.sock或/tmp/mysql.sock,修改数据库配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名', 'USER': '你的数据库用户名', 'PASSWORD': '你的数据库密码', 'HOST': 'localhost', 'PORT': '', 'OPTIONS': { 'unix_socket': '/usr/local/var/mysql/mysql.sock', # 根据实际路径调整 }, } }
内容的提问来源于stack exchange,提问作者Cristofer Nava
相关产品推荐
相关产品推荐

