Michael Kummer wrote:
hi!

is it possible without loosing user data/mails?
and how should it be accomplished.
i guess there exists no converter script for my old myisam tables to the
latest db layout using innodb.

Converting from rc3 to 1.0+ can be done with the statements in the attachment.

Converting to innodb simply use:

alter table users type=innodb;
alter table messages type=innodb;
alter table messageblks type=innodb;
...
etc...


You will want to shut down dbmail and your mta though, to prevent locking issues and speed up the conversion.

--
  ________________________________________________________________
  Paul Stevens                                  mailto:[EMAIL PROTECTED]
  NET FACILITIES GROUP                     PGP: finger [EMAIL PROTECTED]
  The Netherlands________________________________http://www.nfg.nl

alter table aliases change client_id client_idnr bigint(21) DEFAULT '0' NOT 
NULL;
alter table aliases drop index alias_idnr;
alter table aliases add index alias (alias);

rename table mailbox to mailboxes;
alter table mailboxes change mailboxidnr mailbox_idnr bigint(21) DEFAULT '0' 
NOT NULL auto_increment;
alter table mailboxes change owneridnr owner_idnr bigint(21) DEFAULT '0' NOT 
NULL;

rename table message to messages;

alter table messages change messageidnr message_idnr bigint(21) DEFAULT '0' NOT 
NULL auto_increment;
alter table messages change mailboxidnr mailbox_idnr bigint(21) DEFAULT '0' NOT 
NULL;
alter table messages add rfcsize bigint(21) DEFAULT '0' NOT NULL;
alter table messages drop index messageidnr_2;
alter table messages add unique message_idnr_2 (message_idnr);
alter table messages drop index messageidnr;
alter table messages add index message_idnr (message_idnr);


rename table messageblk to messageblks;

alter table messageblks change messageblknr messageblk_idnr bigint(21) DEFAULT 
'0' NOT NULL auto_increment;
alter table messageblks change messageidnr message_idnr bigint(21) DEFAULT '0' 
NOT NULL;
alter table messageblks drop index messageblknr_2;
alter table messageblks add unique key messageblk_idnr_2 (messageblk_idnr);
alter table messageblks drop index messageblknr;
alter table messageblks add index messageblk_idnr (messageblk_idnr);


rename table user to users;

alter table users change useridnr user_idnr bigint(21) DEFAULT '0' NOT NULL 
auto_increment;
alter table users change clientid client_idnr bigint(21) DEFAULT '0' NOT NULL;
alter table users add encryption_type varchar(20) DEFAULT '' NOT NULL;
alter table users add last_login DATETIME DEFAULT '1979-11-03 22:05:58' NOT 
NULL;
alter table users add UNIQUE userid_2 (userid);
alter table users drop index useridnr;
alter table users add index user_idnr(user_idnr,userid);

CREATE TABLE auto_notifications (
   auto_notify_idnr bigint(21) default '0' not null auto_increment,
   user_idnr bigint(21) DEFAULT '0' NOT NULL,
   notify_address VARCHAR(100),
   PRIMARY KEY (auto_notify_idnr)
);

CREATE TABLE auto_replies (
   auto_reply_idnr bigint(21) DEFAULT '0' NOT NULL auto_increment,
   user_idnr bigint(21) DEFAULT '0' NOT NULL,
   reply_body mediumtext,
   PRIMARY KEY (auto_reply_idnr)
);

CREATE TABLE tmpmessage (
       message_idnr bigint(21) DEFAULT '0' NOT NULL auto_increment,
       mailbox_idnr int(21) DEFAULT '0' NOT NULL,
       messagesize bigint(21) DEFAULT '0' NOT NULL,
       seen_flag tinyint(1) default '0' not null,
       answered_flag tinyint(1) default '0' not null,
       deleted_flag tinyint(1) default '0' not null,
       flagged_flag tinyint(1) default '0' not null,
       recent_flag tinyint(1) default '0' not null,
       draft_flag tinyint(1) default '0' not null,
       unique_id varchar(70) NOT NULL,
       internal_date datetime default '0' not null,
       status tinyint(3) unsigned zerofill default '000' not null,

       PRIMARY KEY (message_idnr),
       KEY message_idnr (message_idnr),
       UNIQUE message_idnr_2 (message_idnr)
);

CREATE TABLE tmpmessageblk (
       messageblk_idnr bigint(21) DEFAULT '0' NOT NULL auto_increment,
       message_idnr bigint(21) DEFAULT '0' NOT NULL,
       messageblk longtext NOT NULL,
       blocksize bigint(21) DEFAULT '0' NOT NULL,

       PRIMARY KEY (messageblk_idnr),
       KEY messageblk_idnr (messageblk_idnr),
       KEY msg_index (message_idnr),
       UNIQUE messageblk_idnr_2 (messageblk_idnr)
);



Reply via email to