In brief, the problem is that django does not show any indication of an error having occurred when using loaddata under certain conditions, even though a transaction rollback occurred and nothing was added to the database.
The following illustrates the problem:
calvins@gould ~/djangobug $ ./manage.py sqlreset bug| psql djangobug && ./manage.py --verbosity=2 loaddata incorrect_data.xml
BEGIN
ALTER TABLE
DROP TABLE
DROP TABLE
NOTICE: CREATE TABLE will create implicit sequence "bug_zxcv_id_seq" for serial column "bug_zxcv.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "bug_zxcv_pkey" for table "bug_zxcv"
CREATE TABLE
NOTICE: CREATE TABLE will create implicit sequence "bug_asdf_id_seq" for serial column "bug_asdf.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "bug_asdf_pkey" for table "bug_asdf"
CREATE TABLE
ALTER TABLE
CREATE INDEX
COMMIT
Loading 'incorrect_data.xml' fixtures...
Checking '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures' for xml fixture 'incorrect_data'...
No xml fixture 'incorrect_data' in '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures' for xml fixture 'incorrect_data'...
No xml fixture 'incorrect_data' in '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures' for xml fixture 'incorrect_data'...
No xml fixture 'incorrect_data' in '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures' for xml fixture 'incorrect_data'...
No xml fixture 'incorrect_data' in '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures'.
Checking '/home/calvins/djangobug/../djangobug/bug/fixtures' for fixtures...
Trying '/home/calvins/djangobug/../djangobug/bug/fixtures' for xml fixture 'incorrect_data'...
No xml fixture 'incorrect_data' in '/home/calvins/djangobug/../djangobug/bug/fixtures'.
Checking absolute path for fixtures...
Trying absolute path for xml fixture 'incorrect_data'...
Installing xml fixture 'incorrect_data' from absolute path.
Installed 39 object(s) from 1 fixture(s)
The output says that 39 objects were installed from 1 fixture, and gives no indication of there being errors or problems. But the data file contains two objects that were not added to the database. One of them has a data integrity problem (which initially occurred because I had made a schema change and forgot to syncdb), which prevents that object from being added, but the correct object was also not added, presumably because everything was in a transaction that was rolled back.
The following is the output using the correct data:
calvins@gould ~/djangobug $ ./manage.py sqlreset bug| psql djangobug && ./manage.py --verbosity=2 loaddata correct_data.xml
BEGIN
ALTER TABLE
DROP TABLE
DROP TABLE
NOTICE: CREATE TABLE will create implicit sequence "bug_zxcv_id_seq" for serial column "bug_zxcv.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "bug_zxcv_pkey" for table "bug_zxcv"
CREATE TABLE
NOTICE: CREATE TABLE will create implicit sequence "bug_asdf_id_seq" for serial column "bug_asdf.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "bug_asdf_pkey" for table "bug_asdf"
CREATE TABLE
ALTER TABLE
CREATE INDEX
COMMIT
Loading 'correct_data.xml' fixtures...
Checking '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures' for xml fixture 'correct_data'...
No xml fixture 'correct_data' in '/usr/lib/python2.4/site-packages/django/contrib/auth/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures' for xml fixture 'correct_data'...
No xml fixture 'correct_data' in '/usr/lib/python2.4/site-packages/django/contrib/contenttypes/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures' for xml fixture 'correct_data'...
No xml fixture 'correct_data' in '/usr/lib/python2.4/site-packages/django/contrib/sessions/fixtures'.
Checking '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures' for fixtures...
Trying '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures' for xml fixture 'correct_data'...
No xml fixture 'correct_data' in '/usr/lib/python2.4/site-packages/django/contrib/sites/fixtures'.
Checking '/home/calvins/djangobug/../djangobug/bug/fixtures' for fixtures...
Trying '/home/calvins/djangobug/../djangobug/bug/fixtures' for xml fixture 'correct_data'...
No xml fixture 'correct_data' in '/home/calvins/djangobug/../djangobug/bug/fixtures'.
Checking absolute path for fixtures...
Trying absolute path for xml fixture 'correct_data'...
Installing xml fixture 'correct_data' from absolute path.
Installed 39 object(s) from 1 fixture(s)
The output looks the same, but the objects were added this time.
I'm attaching a tarball containing a simple project with two kinds of model objects. In the root directory of the project, there are two data files, incorrect_data.xml and correct_data.xml. Running loaddata on either one shows the same output, with no indication of failure, though loading incorrect_data.xml results in nothing being added to the database and correct_data results in the data correctly being added.