我需要将一个复杂的项目从sqlite迁移到PostgreSQL。很多人似乎对外键、数据截断等有问题.
编辑:我尝试了django-命令扩展 DumpScript,但是它没有在我的2GB内存PC上用我当前的DataSet运行。
发布于 2014-12-08 14:02:58
根据我的经验,从SQL转储和还原不能正常工作。
您应该遵循以下顺序:
1.将db内容转储到json
$ ./manage.py dumpdata > dump.json2.在settings.py中切换后端
DATABASES = {
# COMMENT OUT:
# 'default': dj_database_url.config(default='sqlite:////full/path/to/your/database/file.sqlite'),
# ADD THIS INSTEAD:
'default': dj_database_url.config(default='postgres://localhost:5432/postgres_db_name'),
}3. Syncdb并将新数据库迁移到相同的表结构
$ ./manage.py syncdb
$ ./manage.py migrate4.将json加载到新的db.
$ ./manage.py loaddata dump.json5.恭喜!现在,新的数据在postgres db.中。
发布于 2017-05-12 12:36:59
以下是对Django 尼莫的回答和斯蒂芬的回答 1.7+的改进:
./manage.py dumpdata --natural-primary --natural-foreign > dump.jsonsettings.py中的settings.py更改为指向新的(PostgreSQL) db。./manage.py migrate./manage.py loaddata dump.json我遇到的一个问题是,SQLite似乎并没有为CharField执行最大长度。在我的例子中,这使得loaddata步骤失败。我能够通过以下方法找到(和删除)具有过长CharField值的模型实例:
MyModel.objects.extra(where=["LENGTH(text) > 20"]).delete()一旦我在上面的第一步之前做了这件事,一切都成功了。
发布于 2010-08-13 13:08:10
我从来没有做过,但我要尝试的是。
https://stackoverflow.com/questions/3476606
复制相似问题