我们正在将django应用程序的数据迁移到一个新的环境中。通常,我们只需要使用内置的dumpdata
管理命令来创建所有表的转储,然后使用loaddata
将所有内容加载回新环境。
准确地说,我们使用以下命令创建没有auth.permissions
和contenttypes
表的db dump:python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 2 > db.json
我们注意到,结果中每个表最多只包含2000行。由于我们的一些表有8000-15.000条记录,因此在新环境中导入转储时,我们丢失了数据。
到目前为止我们所做的/尝试的
- 我们尝试了dumpdata命令的不同参数组合
- 我们尝试了其他格式,如jsonl或xml
- 我们没有改变序列化器中的任何东西
- 我们发现这可能是数据库内存不足的限制
- 我们发现我们可能需要为我们的数据库调整max_allowed_packets(目前为64 MB)
使用的Django版本和包 - 中文(简体)
- mysql-connector-python==8.0.30
- payyaml ==6.0
- 其他 *
问题
- 其他 *
- 有人知道我们在这里看不到什么吗
- 如果它是由于mysql max_allow_packets设置-我们如何更改它?我们在Docker容器中运行数据库和应用程序
非常感谢您的帮助!如果您需要更多信息,我们很乐意与您分享。
1条答案
按热度按时间mbyulnm01#
我们实际上通过从Django安装中复制原始的
dumpdata.py
并对其进行一些更改来解决这个问题:这是一个全新的文件,
<app>/management/commands/dumpdata2.py
: