【发布时间】:2021-09-21 16:19:52
【问题描述】:
我有一个相当大的 750MB 数据库,我需要将其从 sqlite 迁移到 postgres。由于数据库非常大,我面临一些以前关于同一主题的问题没有遇到的问题。
几天前,我迁移了一个大小为 30MB 的 sqlite db,loaddata 和 dumpdata 命令没有任何问题。但是对于这个大型数据库,我的一个应用程序在运行命令dumpdata 时会抛出Database image is malformed 错误。我的另一个应用程序成功转储但未加载。我已经看到带有-v 3 详细标志的对象甚至没有被处理。准确地说,在运行loaddata 命令时,首先处理来自 json 文件的数据以检查重复的主键和其他模型约束,然后使用这些数据创建模型对象。但是对于这个应用程序,数据首先不会被处理。
除了这两个命令之外,还有其他一些方法可以进行迁移。但是,架构以我不想做的那些方式完全改变了。此外,我遇到了问题DurationField 在迁移后变成了一个字符串,我无法对这些字段进行类型转换。 Bigint 变成 int 和 varchar 变成 text 等等都是一些问题。我不能承受这种问题。
【问题讨论】:
-
你能发布你用于加载数据的命令吗?
-
./manage.py loaddata -v 3 data.json
-
您是否定义了多个数据库?您是否尝试将 --app 添加到命令中,
python manage.py loaddata -v3 --app YOURAPP data.json? -
是的,我做过类似的事情。转储特定的应用程序,然后尝试加载数据。我的一个应用程序存在不处理 json 文件中的对象的问题。
-
是的。我曾是。现在问题已经解决了。我有一个递归模型架构,其中一个条目已损坏,导致此问题
标签: django postgresql sqlite database-migration