Fedora 37下Django配置MariaDB的方法及冲突解决
Django + MariaDB 配置问题解答
一、当前配置的正确性分析
你的settings.py数据库配置方向是对的,但有几个细节需要修正:
- 引号错误:配置里用了中文引号(
‘’),必须改成英文单引号(''),否则Django会抛出语法错误。 - 数据库需提前创建:
NAME字段指定的myproject数据库,需要先在MariaDB中手动创建,否则执行migrate时会提示数据库不存在。 - PORT建议明确:留空默认使用3306端口,建议显式写
'3306',配置更清晰。
修正后的配置示例:
# Database # https://docs.djangoproject.com/en/1.8/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'myproject', 'USER': 'yourusername', 'PASSWORD': 'yourpassword', 'HOST': 'localhost', 'PORT': '3306', } }
另外,mysqlclient是正确的数据库驱动,它完全兼容MariaDB,不需要更换其他驱动。
二、解决Fedora中MySQL与MariaDB的互斥问题
Fedora官方仓库中MySQL(community-mysql)与MariaDB是互斥包,无法同时安装,你需要卸载现有MySQL组件,再安装MariaDB:
卸载已安装的MySQL包
执行命令彻底移除MySQL相关组件:sudo dnf remove community-mysql community-mysql-server安装MariaDB及服务端
安装MariaDB核心包和服务器组件:sudo dnf install mariadb mariadb-server启动并启用MariaDB服务
启动服务并设置开机自启:sudo systemctl start mariadb sudo systemctl enable mariadb初始化MariaDB安全配置
运行安全脚本设置root密码、移除匿名用户等:sudo mysql_secure_installation创建Django所需的数据库和用户
登录MariaDB控制台,创建项目数据库和授权用户:mysql -u root -p执行以下SQL语句(替换成你的用户名和密码):
CREATE DATABASE myproject CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword'; GRANT ALL PRIVILEGES ON myproject.* TO 'yourusername'@'localhost'; FLUSH PRIVILEGES; EXIT;验证Django连接
回到项目目录,执行迁移命令测试连接:python manage.py migrate
内容的提问来源于stack exchange,提问作者shadow
相关产品推荐
相关产品推荐

