Také jste se pustili do aktualizací svých webů s redakčním systémem Drupal a při pokusu přejít na novou verzi modulu Internationalization jste narazili na chybové hlášení PDO error? Na vině je zastaralé uložení databázové tabulky.

Na většině instalací Drupal používá databázi MySQL. Ta může mít své tabulky uloženy v různých formátech, nejčastěji jako MyISAM nebo InnoDB. Starší verze Drupalu používaly první jmenovanou variantu.

Drupal 7 již pracuje s InnoDB, mimo jiné kvůli lepšímu výkonu. Na druhou stranu, pokud jste na Drupal 7 aktualizovali starší web, pak se způsob uložení databázových tabulek nemění a zůstává stále MyISAM.

A to je problém, který způsobuje problém s aktualizací modulu Internationalization u některých instalací Drupalu. Skončí chybovým hlášením a změna struktury databáze, konkrétně přidání jednoho indexu k tabulce lokalizací neproběhne. Drupal pak může zlobit.

Jak z toho ven? Stačí změnit MyISAM za InnoDB.

Měníme MyISAM na InnoDB pomocí Admineru

Na většině hostingů asi najdete databázového správce phpMyAdmin. Když se do něj přihlásíte a otevřete si databázi, v přehledu tabulek uvidíte mimo jiných údajů i sloupeček typ, kde bude napsáno MyISAM nebo InnoDB. Vyhledejte tabulku locales_source, rozklepněte ji, přepněte se na kartu Úpravy a změňte její Úložiště na InnoDB. Změnu pak uložte.

Pomocí mého oblíbeného databázového správce Adminer je to ještě jednodušší. Otevřete si databázi, rozklepněte tabulku locales_source, klepněte na odkaz Pozměnit tabulku a rovněž změňte její typ z MyISAM na InnoDB.

Po úpravě databáze pak spusťte v Drupalu update.php. Proces aktualizace by měl již proběhnout bez chyb až do konce a v sekci Logy > Hlášení webu byste už neměli vidět žádný problém spojený s aktuálností databáze.

A nezapomeňte, že před změnami v databázi i při běžných aktualizacích je třeba web zálohovat.