sql >> Base de Datos >  >> RDS >> PostgreSQL

Django no puede cargar accesorios de prueba, IntegrityError

Parece que django dumpdata descargó los accesorios en el orden incorrecto. Mire en el archivo json para verificar si product con id: 1 está presente allí. Si, como supongo, esto es cierto, use algunas herramientas más sofisticadas para volcar datos, por ejemplo django-fixture-magic

Alternativamente, es posible que desee eliminar todas las restricciones de integridad mediante el motor de base de datos justo antes de la carga e intentar recrearlas inmediatamente después, pero esto es algo arriesgado si se presentan algunos errores de integridad.

Para PostgreSQL, consulte este hilo para saber cómo obtener las definiciones de sus tablas. En MySQL sería algo como lo siguiente:

$ 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 siguiente parte debería funcionar para oracle, postgre y 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