サイトで自動バックアップを設定しようとして問題が発生しました。問題は次のように要約されます。
Python シェルを開き、dumpdata コマンドを 2 回呼び出します。初めて機能し、2 回目は空のリストを返します。その後、以降のすべての dumpdata 呼び出しは空のリストを返します。
>>> python manage.py shell
>>> from django.core.management import call_command
>>> call_command("dumpdata")
[{"pk": 1, (...) // lots of data //
>>> call_command("dumpdata")
>>> []
再び機能させるには、Python シェルを再起動する必要があります。
編集:Django 1.4とPython 2.6を使用しています
Edit2: 私の現在の仮説は、問題がこの問題に関連しているということです: https://code.djangoproject.com/ticket/5423 - 5 年前に特定され、Django 1.5 リリース ノートによると、次のリリースで解決される予定です。マシンで実行されている 1.4 フレームワーク コードを変更せずに、この問題を回避する方法を知っている人はいますか?
Edit3: ただし、データベース全体の sql ダンプは 0.5 MB しかないため、シリアライゼーションでメモリが不足する可能性はほとんどありません。とにかく、そのような場合、明示的なエラーが発生しませんか?
Edit4: 謎が解決しました。Tomasz Gandor が正しく判断したように、問題は、シェルが 1 つのトランザクションでコマンドを実行し、コマンドの 1 つが DBError を引き起こした後、https ://code.djangoproject.com/ticket/10813 で説明されているように、それ以降の DB 呼び出しが無視されることでした。 . 最初のダンプデータ中の DB エラーが明示的に報告されなかった理由は、私には謎のままです。