Je reçois l'erreur suivante lorsque je lance ./manage.py reset app1
:Remise à zéro des bases de données d'avoir OneToOneField traverser différentes applications dans Django
Error: Error: app1 couldn't be reset. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin.py sqlreset app2'. That's the SQL this command wasn't able to run.
The full error: (1217, 'Cannot delete or update a parent row: a foreign key constraint fails')
avec un modèle qui a OneToOneField avec un autre modèle dans une autre application (disons App2) . J'utilise MySQL InnoDB. Plus précisément, OneToOneField est déclaré dans le modèle d'app2.
Comment puis-je me débarrasser de cette erreur?
Update: La sortie de commande sqlreset est:
(APP1)
BEGIN;
DROP TABLE `app1_instance`;
DROP TABLE `app1_instancegroup`;
CREATE TABLE `app1_instancegroup` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
-- some more fields
)
;
CREATE TABLE `app1_instance` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`belongs_to_id` integer NOT NULL,
-- some more fields
)
;
ALTER TABLE `app1_instance` ADD CONSTRAINT `belongs_to_id_refs_id_455b868f` FOREIGN KEY (`belongs_to_id`) REFERENCES `app1_instancegroup` (`id`);
CREATE INDEX `app1_instance_belongs_to_id` ON `app1_instance` (`belongs_to_id`);
COMMIT;
(App2)
BEGIN;
DROP TABLE `app2_team`;
CREATE TABLE `app2_team` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`instance_group_id` integer NOT NULL UNIQUE,
-- some more fields
)
;
ALTER TABLE `app2_team` ADD CONSTRAINT `instance_group_id_refs_id_39493b52` FOREIGN KEY (`instance_group_id`) REFERENCES `app1_instancegroup` (`id`);
COMMIT;
Avez-vous essayé de regarder la sortie de django-admin.py sqlreset app2? Qu'est-ce que c'était? –
Je l'ai mis à jour. – Achimnol
J'ai dû supprimer la contrainte de clé étrangère manuellement via la console mysql. Y a-t-il un soutien pour ce genre d'emplois à Django ou par des tiers? – Achimnol