Skąd MySQL wiedziałby, co zaktualizować? Nie może wiedzieć, w jakim stanie będzie znajdować się czyjaś baza danych, więc nie może wiedzieć, jakie aktualizacje zastosować. Ponadto aktualizacje często wymagają czegoś więcej niż tylko zmiany schematu; mogą wymagać zmian w danych, które już istnieją, lub mogą wymagać przeniesienia danych ze starego schematu do nowego. Nigdy nie dostaniesz czegoś, co automatycznie to wszystko wykryje.
Właściwym rozwiązaniem jest pisanie migracji. Za każdym razem, gdy zmieniasz bazę danych, zamiast po prostu zmieniać schemat swojej kopii programistycznej samodzielnie, piszesz skrypt aktualizujący z poprzedniego schematu do nowego (i zwykle skrypt, aby wrócić do poprzedniego schematu, dzięki czemu możesz że jeśli musisz wycofać aktualizację). Ten skrypt robi wszystko, czego potrzebujesz, aby zmienić schemat, przenosić dane i tym podobne.
Większość nowoczesnych frameworków internetowych, takich jak Ruby on Rails , obsługuje migracje, aby łatwiej śledzić migracje, które już zostały uruchomione. Jeśli nie używasz frameworka, który obsługuje migracje, nie byłoby zbyt trudno napisać własne skrypty do stosowania migracji. Po prostu ponumeruj każdą migrację lub umieść w niej datę i przechowuj tabelę w swojej bazie danych, przechowującą tylko aktualną wersję schematu, na którym się znajdujesz. Po uruchomieniu skryptu migracji, jeśli są jakieś migracje nowsze niż bieżąca wersja, zastosuj te skrypty w kolejności, a następnie zaktualizuj numer w bazie danych, który mówi, z której wersji korzystasz.