Drupal 7 fields a změna maximální délky na produkční databázi

Docela často se stává, že na různé limity nastavené při návrhu databáze narazíme až v produkčním prostředí. V jednoduchých aplikacích je to záležitost změny jedné hodnoty v databázi. V Drupalu je to o malinko složitější, protože je nutné celkem změnit 3 hodnoty (pokud neměníme datový typ). Které to jsou?

Každý, kdo se podíval na základní schéma Drupal databáze objevil, že s fields souvisí 4 tabulky:

  • field_config
  • field_config_instance (nebudeme měnit)
  • field_data_XXX
  • field_revision_XXX

Nastíníme si modelovou situaci – u uživatele mám evidováno jméno a nastavil jsem mu limit na 10 znaků. Bohužel existují i cizokrajná jména, která tuto hodnotu přesahují. Bude tedy nutné provést tři zásahy.

  1. Změnit hodnotu ve sloupci data v tabulce field_config. Konkrétně nás zajímá řádek field_user_name. Tato hodnota je uložená v serializované podobě. Pokud si ji chcete zobrazit v čitelné podobě, využijte třeba stránku http://unserialize.net/ Nás zajímá hodnota max_length neboli celá tato část {s:10:„max_length“;s:2:„10“;} kterou změníme následovně {s:10:„max_length“;s:2:„30“;} Nově nastavíme limit 30 znaků pro jméno. První krok máme hotový.
  2. Nyní se přesuneme ke specifickým tabulkám pro náš field jméno field_data_user_name a field_revision_user_name. Jelikož jsme si zvolili při tvorbě field datový typ VARCHAR (text do 255 znaků), stačí nám u sloupce field_user_name_value nastavit maximální délku z 10 na 30 znaků. Nezapomeňte, že stejná změna je potřeba provést u obou tabulek! Pokud bychom chtěli změnit i datový typ, bylo by lepší udělat to programově (vytvořit nové pole a přesunout sem data).

Do nové verze Drupalu se chystá možnost změny přímo z administrace Drupalu. Dokud to nebude implementováno, je toto nejjednodušší způsob jako tuto změnu provést.

Jen pro připomenutí, tuto změnu nikdy netestujte na živé databázi, může se velice lehce stát, že znefunkčníte celý web!



Komentáře

Zatím nikdo nepřidal komentář, můžete být první.



O autorovi

Pari

Vítejte na mém blogu, rád bych se v krátkosti představil. Je mi 26 let. Momentálně nejvíce času věnuji projektu Lepime.cz - obchod se samolepkami na zeď a tvorbě webů postavených na redakčním systému Drupal pod značkou MEPA.CZ.