PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django kann Test Fixtures nicht laden, IntegrityError

Scheint, dass Django Dumpdata Fixtures in falscher Reihenfolge ausgegeben hat. Sehen Sie in der JSON-Datei nach, ob product mit id: 1 ist dort anwesend. Wenn dies, wie ich vermute, zutrifft, verwenden Sie einige ausgefeiltere Tools zum Speichern von Daten, zum Beispiel django-fixture-magic

Alternativ können Sie alle Integritätsbeschränkungen kurz vor dem Hochladen mithilfe der db-Engine löschen und versuchen, sie direkt danach neu zu erstellen, aber dies ist etwas riskant, wenn einige Integritätsfehler vorhanden sind.

Für PostgreSQL konsultieren Sie diesen Thread um zu wissen, wie Sie Ihre Tabellendefinitionen erhalten. In MySQL wäre das ungefähr so:

$ mysqldump --no-data -utest django auth_user_user_permissions
CREATE TABLE `auth_user_user_permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `permission_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_id` (`user_id`,`permission_id`),
  KEY `auth_user_user_permissions_403f60f` (`user_id`),
  KEY `auth_user_user_permissions_1e014c8f` (`permission_id`),
  CONSTRAINT `user_id_refs_id_dfbab7d` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`),
  CONSTRAINT `permission_id_refs_id_67e79cb` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Der folgende Teil sollte für Oracle, Postgre und MySQL funktionieren

> alter table `auth_user_user_permissions` drop foreign key `user_id_refs_id_dfbab7d`;
Query OK, 0 rows affected (0.97 sec)
Records: 0  Duplicates: 0  Warnings: 0

> alter table `auth_user_user_permissions` add CONSTRAINT `user_id_refs_id_dfbab7d` FOREIGN KEY (`user_id`) references `auth_user` (`id`);
Query OK, 0 rows affected (0.95 sec)
Records: 0  Duplicates: 0  Warnings: 0