Ok, it took a while, but I finally came up with this MySQL script to 
fix the IR of the whole database.

It's running now, and hopefully it should fix my problems.

I'm posting it here so that if anybody else need it..

Obviously I make no guarantees of any kind.


ALTER TABLE dbmail_mailboxes DROP FOREIGN KEY dbmail_mailboxes_ibfk_1;
ALTER TABLE dbmail_mailboxes ADD FOREIGN KEY owner_idnr_fk 
(owner_idnr) REFERENCES dbmail_users (user_idnr) ON DELETE CASCADE ON 
UPDATE CASCADE;

ALTER TABLE dbmail_subscription DROP FOREIGN KEY 
dbmail_subscription_ibfk_1;
ALTER TABLE dbmail_subscription DROP FOREIGN KEY 
dbmail_subscription_ibfk_2;
ALTER TABLE dbmail_subscription DROP FOREIGN KEY 
dbmail_subscription_ibfk_3;
ALTER TABLE dbmail_subscription DROP FOREIGN KEY 
dbmail_subscription_ibfk_4;

ALTER TABLE `dbmail_subscription`
  ADD FOREIGN KEY (`mailbox_id`) REFERENCES `dbmail_mailboxes` 
(`mailbox_idnr`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD FOREIGN KEY (`user_id`) REFERENCES `dbmail_users` (`user_idnr`)  
ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE dbmail_acl DROP FOREIGN KEY dbmail_acl_ibfk_1;
ALTER TABLE dbmail_acl DROP FOREIGN KEY dbmail_acl_ibfk_2;

ALTER TABLE dbmail_acl
  ADD FOREIGN KEY user_id_fk (user_id) REFERENCES dbmail_users 
(user_idnr) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD FOREIGN KEY mailbox_id_fk (mailbox_id) REFERENCES 
dbmail_mailboxes (mailbox_idnr) ON DELETE CASCADE ON UPDATE CASCADE;


ALTER TABLE dbmail_messages DROP FOREIGN KEY dbmail_messages_ibfk_1;
ALTER TABLE dbmail_messages DROP FOREIGN KEY dbmail_messages_ibfk_2;

ALTER TABLE dbmail_messages
  ADD FOREIGN KEY physmessage_id_fk (physmessage_id) REFERENCES 
dbmail_physmessage (id) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD FOREIGN KEY mailbox_idnr_fk (mailbox_idnr) REFERENCES 
dbmail_mailboxes (mailbox_idnr) ON DELETE CASCADE ON UPDATE CASCADE;


ALTER TABLE dbmail_messageblks DROP FOREIGN KEY 
dbmail_messageblks_ibfk_1;
ALTER TABLE dbmail_messageblks ADD FOREIGN KEY physmessage_id_fk 
(physmessage_id) REFERENCES dbmail_physmessage (id) ON DELETE CASCADE 
ON UPDATE CASCADE;

ALTER TABLE dbmail_auto_notifications DROP FOREIGN KEY 
dbmail_auto_notifications_ibfk_1;
ALTER TABLE dbmail_auto_notifications ADD FOREIGN KEY user_idnr_fk 
(user_idnr) REFERENCES dbmail_users (user_idnr) ON DELETE CASCADE ON 
UPDATE CASCADE;

ALTER TABLE dbmail_auto_replies DROP FOREIGN KEY 
dbmail_auto_replies_ibfk_1;
ALTER TABLE dbmail_auto_replies ADD FOREIGN KEY user_idnr_fk 
(user_idnr) REFERENCES dbmail_users (user_idnr) ON DELETE CASCADE ON 
UPDATE CASCADE;

ALTER TABLE dbmail_sievescripts DROP FOREIGN KEY 
dbmail_sievescripts_ibfk_1;
ALTER TABLE dbmail_sievescripts ADD FOREIGN KEY owner_idnr_fk 
(owner_idnr) REFERENCES dbmail_users (user_idnr) ON DELETE CASCADE ON 
UPDATE CASCADE;

ALTER TABLE dbmail_headervalue DROP FOREIGN KEY 
dbmail_headervalue_ibfk_1;
ALTER TABLE dbmail_headervalue DROP FOREIGN KEY 
dbmail_headervalue_ibfk_2;

ALTER TABLE dbmail_headervalue
  ADD FOREIGN KEY (headername_id) REFERENCES dbmail_headername(id) ON 
UPDATE CASCADE ON DELETE CASCADE,
  ADD FOREIGN KEY (physmessage_id) REFERENCES dbmail_physmessage(id) 
ON UPDATE CASCADE ON DELETE CASCADE;


ALTER TABLE dbmail_subjectfield DROP FOREIGN KEY 
dbmail_subjectfield_ibfk_1;
ALTER TABLE dbmail_subjectfield ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_datefield DROP FOREIGN KEY dbmail_datefield_ibfk_1;
ALTER TABLE dbmail_datefield ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_referencesfield DROP FOREIGN KEY 
dbmail_referencesfield_ibfk_1;
ALTER TABLE dbmail_referencesfield ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_fromfield DROP FOREIGN KEY dbmail_fromfield_ibfk_1;
ALTER TABLE dbmail_fromfield ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_tofield DROP FOREIGN KEY dbmail_tofield_ibfk_1;
ALTER TABLE dbmail_tofield ADD FOREIGN KEY (physmessage_id) REFERENCES 
dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_replytofield DROP FOREIGN KEY 
dbmail_replytofield_ibfk_1;
ALTER TABLE dbmail_replytofield ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_ccfield DROP FOREIGN KEY dbmail_ccfield_ibfk_1;
ALTER TABLE dbmail_ccfield ADD FOREIGN KEY (physmessage_id) REFERENCES 
dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE dbmail_envelope DROP FOREIGN KEY dbmail_envelope_ibfk_1;
ALTER TABLE dbmail_envelope ADD FOREIGN KEY (physmessage_id) 
REFERENCES dbmail_physmessage(id) ON UPDATE CASCADE ON DELETE CASCADE;



You may want add SET FOREIGN_KEY_CHECKS = 0; and SET 
FOREIGN_KEY_CHECKS = 1; at the and and at the bottom....


Naviga e telefona senza limiti con Tiscali     
Scopri le promozioni Tiscali adsl: navighi e telefoni senza canone Telecom

http://abbonati.tiscali.it/adsl/

_______________________________________________
DBmail mailing list
[email protected]
https://mailman.fastxs.nl/mailman/listinfo/dbmail

Reply via email to