PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Django incapable de charger les appareils de test, IntegrityError

Il semble que django dumpdata a vidé les appareils dans le mauvais ordre. Regardez dans le fichier json pour vérifier si product avec id: 1 y est présent. Si, comme je le suppose, cela est vrai, utilisez des outils plus sophistiqués pour vider les données, par exemple django-fixture-magic

Alternativement, vous pouvez supprimer toutes les contraintes d'intégrité à l'aide du moteur de base de données juste avant le téléchargement et essayer de les recréer juste après, mais cela est quelque peu risqué si des erreurs d'intégrité sont présentes.

Pour PostgreSQL, consultez ce fil pour savoir comment obtenir vos définitions de tables. Dans MySQL, ce serait quelque chose comme ceci :

$ 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;

La partie suivante devrait fonctionner pour oracle, postgre et mysql

> 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