Общеизвестно, что существует единственный надежный способ переноса любых SQL-баз с одной системы на другую, а именно - перенос в виде набора sql-команд в текстовом файле(ах). Однако, ради ускорения работы, базы между одинаковыми серверами и платформами часто переносят в виде обычных файлов. Конкретно, для MySQL, это 3 файла на таблицу с расширениями frm, myd и myi. Так считают многие, забывая, что таблицу в этих трех файлах mysql держит только в случае, если формат таблицы - MYISAM...
Уже пару раз господа студенты приносили мне "на посмотреть" базы mysql, которые ни на своем, ни на стороннем компьютере развернуть не получалось. Отсылая их обратно с напутствием приносить все в виде SQL-команд, и стандартным пожеланием продолжать маяться мазохизмом в этом клятом виндовсе, тем не менее, заинтересовался в причинах проблемы. Посмотрев на принесенные файлы, обнаружил там только файлы с расширением frm, которые содержат структуру таблиц. Файлы с данными (myd) и с индексами (myi) - отсутствовали. Все это вызвало как минимум недоумение, ведь не будет-же студент сидеть и перебирать файлы - это понесу, а это - нет, он наверняка просто скопирует каталог базы со всем содержимым на флешку. Разбираясь, полистал один из frm-файлов и обнаружил в нем магическое слово InnoDB, после чего все стало на свои места.
Оказывается, создавая свои таблицы, студиозы (по непонятным мне причинам, возможно - по умолчанию в их версии mysql) выбирают тип движка - InnoDB. Никаких профитов на своих мелких проектах они от этого не получают (ну покажите мне студиоза, который активно транзакции использует на своих двух-трех таблицах!), а вот при переносе баз получают лишние проблемы, т.к. ВСЕ ТАБЛИЦЫ INNODB ПО УМОЛЧАНИЮ ХРАНЯТСЯ В ОДНОМ БОЛЬШОМ ФАЙЛЕ! А файл этот (сюрпрайз!) лежит вне каталогов их баз данных.
Резюме для студентов:
1) Не гоняйтесь за скоростью
2) Учите матчасть: http://ru.wikipedia.org/wiki/InnoDB, http://ru.wikipedia.org/wiki/MyISAM