You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下Django SQLite数据库迁移MySQL失败求助

解决Django从SQLite迁移到MySQL失败的问题

先别急,我帮你一步步排查这个MySQL迁移的问题。从你给出的配置和报错片段来看,咱们先从最常见的几个坑入手:

1. 确认MySQL驱动已正确安装

Django的MySQL后端依赖mysqlclient库,Python3.6版本需要安装适配的老版本(比如mysqlclient==2.0.3,因为3.6属于较旧的Python版本):

pip install mysqlclient==2.0.3

如果安装失败,先补装系统层面的依赖(以Ubuntu为例):

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential

2. 修正settings.py里的数据库配置

你的配置里有两个容易踩的坑:

  • PORT字段留空了,MySQL默认端口是3306,必须明确指定:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'MasterQuote',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': 'localhost',
            'PORT': '3306',  # 补上默认端口,不能留空
        }
    }
    
  • 确保MasterQuote数据库已经手动创建:Django不会自动帮你建库,登录MySQL命令行执行:
    CREATE DATABASE MasterQuote CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    用utf8mb4编码能支持更全的字符(比如emoji),避免后续数据导入时出现编码错误。

3. 验证MySQL用户权限与连接

  • 先测试root用户能否正常登录MySQL:
    mysql -u root -p
    
    输入密码root后如果能进入,再检查该用户是否允许localhost连接:
    SELECT user, host FROM mysql.user;
    
    确保root对应的host是localhost或者%(允许任意地址连接)。如果是权限问题,可以执行:
    GRANT ALL PRIVILEGES ON MasterQuote.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    

4. 补全报错信息,定位核心问题

你给出的报错回溯只到一半(File "/usr/local/lib/python3.6/dist-packages/djan...),后面的内容才是关键:

  • 如果是No module named 'MySQLdb':说明驱动没装对,回到第一步重新安装mysqlclient;
  • 如果是Access denied for user 'root'@'localhost':说明密码错误或者用户没有权限;
  • 如果是Unknown database 'MasterQuote':说明数据库没创建。

5. 测试基础连接(排除Django干扰)

写个简单的Python脚本,直接测试MySQL连接,确认不是数据库本身的问题:

import mysql.connector

try:
    conn = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
        database='MasterQuote'
    )
    print("✅ 数据库连接成功!")
    conn.close()
except Exception as e:
    print(f"❌ 连接失败:{str(e)}")

如果这个脚本连接失败,先解决MySQL本身的问题,再回到Django的迁移步骤。

6. 正确的迁移步骤(从SQLite到MySQL)

如果前面的配置都没问题,按以下步骤迁移数据:

  1. 先从SQLite导出数据:
    python manage.py dumpdata > data.json
    
  2. 修改settings.py的数据库配置为MySQL(就是你现在的配置,修正后);
  3. 执行迁移,创建MySQL里的表结构:
    python manage.py migrate
    
  4. 导入之前导出的数据:
    python manage.py loaddata data.json
    

内容的提问来源于stack exchange,提问作者PrakashT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:39:18