Cu câteva zile în urmă m-am decis să dezactivez engine-ul InnoDB pe câteva din VPS-urile de la NOVIT, pe are aveam extrem de puțin trafic pe 2 site-uri și un blog, încât nu se justifica utilizarea memoriei (InnoDB consumă vreo 10 MB în plus, spor de performanță inexistent în cazul meu).
Drept urmare, am editat /etc/mysql/my.cnf și am decomentat optiunea skip-innodb, am repornit MySQL și m-am apucat să testez toate aplicațiile care folosesc baze de date. Totul bine și frumos, mai puțin RoundCube (îl folosesc pentru webmail), care a ținut să mă înjure:
SERVICE CURRENTLY NOT AVAILABLE!
Error No. [0x01F4]
Am pus repede la loc InnoDB, a început să meargă RoundCube, și uitându-mă prin tabelele pe care și le-a făcut, s-a confirmat că engine-ul folosit era InnoDB. În mod normal, schimbarea engine-ului ar trebui să fie un alter table simplu, dar la mine s-a lăsat cu următoare oroare:
mysql> use roundcubemail;
mysql> alter table users engine = MyISAM;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Nici phpmyadmin nu s-a descurcat mai bine, iar alter table nu știe (sau nu știu eu?) să modifice mai multe tabele simultan. Soluția pe care o căutam pentru a modifica simultan toate tabelele care folosesc InnoDB s-a dovedit a fi backup, edit și restore. Mai exact, întâi am dump-at baza de date:
# mysqldump -u root -p roundcubemail > /tmp/dump
Următorul pas a fost să editez fișierul rezultat (/tmp/dump) și să înlocuiesc InnoDB cu MyISAM peste tot. În continuare, am șters baza de date existentă (aveam un backup, deci mi-am permis). Alternativ, phpmyadmin știe să facă rename.
mysql> drop database roundcubemail;
Apoi am creat o nouă bază de date cu vechiul nume și am restaurat datele din dump-ul pe care l-am editat mai sus:
mysql> create database roundcubemail;
# mysql roundcubemail -u root -p < /tmp/dump
Ultimul pas a fost să repun opțiunea skip-innodb în /etc/mysql/my.cnf (urmat de restart la MySQL) și RoundCube a mers perfect cu tabele MyISAM în loc de InnoDB.
Related posts:
- Creare utilizatori MySQL N-am studiat niciodată SQL în mod serios și organizat (deși...



Home




