如何将Windows环境下Django项目的SQLite3数据库迁移至Linux环境的PostgreSQL
从SQLite3迁移到PostgreSQL的完整解决方案(解决你的空dumpdata问题)
首先得搞清楚你为什么生成了空的data.json——你现在在Linux环境里,项目的settings.py应该已经配置成指向新的PostgreSQL数据库了,但这个PostgreSQL库是空的,所以dumpdata自然导出的是空列表。你需要先让Django连接回原来的SQLite3数据库,才能导出真实的数据。下面是一步步的解决流程:
步骤1:临时切换回SQLite3导出数据
- 打开项目根目录下的
settings.py,找到DATABASES配置块,修改为指向你拿到的databaseproject.db:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'databaseproject.db', # 注意路径要和你的文件位置匹配,找不到的话可以用绝对路径 } }
- 激活你的虚拟环境,重新执行
dumpdata命令(这次加上--natural-primary来处理自定义主键的模型,避免后续导入冲突):
python manage.py dumpdata --natural-foreign --natural-primary --exclude=auth.permission --exclude=contenttypes --indent=4 > data.json
- 现在检查
data.json,里面应该有你朋友开发时的真实数据了,而不是空列表。
步骤2:配置PostgreSQL环境
- 先创建PostgreSQL的数据库和用户(用命令行操作):
# 进入PostgreSQL命令行 sudo -u postgres psql # 创建项目数据库(替换成你的项目名称) CREATE DATABASE your_project_name_db; # 创建数据库用户(替换用户名和密码) CREATE USER your_db_user WITH PASSWORD 'your_secure_password'; # 给用户授予数据库的全部权限 GRANT ALL PRIVILEGES ON DATABASE your_project_name_db TO your_db_user; # 退出PostgreSQL命令行 \q
- 安装PostgreSQL的Django适配器,如果还没装的话:
pip install psycopg2-binary
- 再次修改
settings.py,切换回PostgreSQL配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'your_project_name_db', 'USER': 'your_db_user', 'PASSWORD': 'your_secure_password', 'HOST': 'localhost', 'PORT': '5432', } }
步骤3:初始化PostgreSQL的表结构
执行migrations命令,创建和原SQLite3一致的空表结构:
python manage.py makemigrations python manage.py migrate
⚠️ 不要用migrate --run-syncdb,它会跳过migrations文件,可能导致表结构和原项目不一致。
步骤4:导入数据到PostgreSQL
用刚才导出的data.json导入数据:
python manage.py loaddata data.json
常见问题排查
- 导入时报外键/主键冲突:确认你在
dumpdata时确实排除了contenttypes和auth.permission,这两个表是Django自动生成的,migrate后已经有数据,导入时会冲突。如果还有问题,可以尝试额外排除sessions表(如果不需要保留会话数据)。 - 字段类型不兼容:SQLite3对字段类型的限制比较宽松,比如允许
CharField存超长内容,PostgreSQL会严格检查。如果导入报错,检查你的模型定义,确保字段类型在PostgreSQL里合法。 - 编码问题:创建PostgreSQL数据库时可以指定UTF-8编码:
CREATE DATABASE your_project_name_db ENCODING 'UTF8';,避免中文等特殊字符乱码。
内容的提问来源于stack exchange,提问作者Developer23
相关产品推荐
相关产品推荐

