Index: loaddata.py
===================================================================
--- loaddata.py	(revision 6190)
+++ loaddata.py	(working copy)
@@ -58,17 +58,23 @@
                 else:
                     formats = []
 
-            if verbosity > 0:
-                if formats:
+            if formats:
+                if verbosity > 0:
                     print "Loading '%s' fixtures..." % fixture_name
-                else:
-                    print "Skipping fixture '%s': %s is not a known serialization format" % (fixture_name, format)
+            else:
+                sys.stderr.write(
+                    self.style.ERROR("Problem installing fixture '%s': %s is not a known serialization format." %
+                         (fixture_name, format)))
+                transaction.rollback()
+                transaction.leave_transaction_management()
+                return
 
             for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']:
                 if verbosity > 1:
                     print "Checking %s for fixtures..." % humanize(fixture_dir)
 
                 label_found = False
+                local_count = [0, 0]
                 for format in formats:
                     serializer = serializers.get_serializer(format)
                     if verbosity > 1:
@@ -85,14 +91,14 @@
                             transaction.leave_transaction_management()
                             return
                         else:
-                            count[1] += 1
+                            local_count[1] += 1
                             if verbosity > 0:
                                 print "Installing %s fixture '%s' from %s." % \
                                     (format, fixture_name, humanize(fixture_dir))
                             try:
                                 objects = serializers.deserialize(format, fixture)
                                 for obj in objects:
-                                    count[0] += 1
+                                    local_count[0] += 1
                                     models.add(obj.object.__class__)
                                     obj.save()
                                 label_found = True
@@ -109,6 +115,17 @@
                         if verbosity > 1:
                             print "No %s fixture '%s' in %s." % \
                                 (format, fixture_name, humanize(fixture_dir))
+                
+                count[0] += local_count[0]
+                count[1] += local_count[1]
+                # If we found a fixture file to load, but no objects loaded, assume 
+                if local_count[1] > 0 and local_count[0] == 0:
+                    sys.stderr.write(
+                        self.style.ERROR("Empty fixture file '%s' found. (File format may be invalid.)" %
+                            (fixture_name)))
+                    transaction.rollback()
+                    transaction.leave_transaction_management()
+                    return
 
         if count[0] > 0:
             sequence_sql = connection.ops.sequence_reset_sql(self.style, models)
