Příčinou je pravděpodobně omezení datového typu v databázi vašich webových stránek. FooEvents ukládá údaje o lístcích pro danou objednávku v jediném serializovaném meta_hodnota. U velkých objednávek (přibližně 30 a více lístků v jedné objednávce, v závislosti na tom, kolik dat každý lístek ukládá) může tato serializovaná hodnota překročit maximální velikost povolenou pro TEXT pole. Když k tomu dojde:
- Meta objednávky je zkrácené nebo neúplně uložené.
- FooEvents nemá všechna data, která očekává.
- Vstupenky pro tuto objednávku mohou nebýt generován správně nebo vůbec.
Koho se to týká? #
To by se mělo týkat pouze obchodů, které:
- Mít HPOS (WooCommerce Vysoce výkonné ukládání objednávek) povoleno.
- Očekávejte zpracování velké objednávky (asi 30 nebo více lístků v jedné objednávce).
Pokud jste ne používání HPOS, neměl by vás tento problém ovlivnit.
Proč se to netýká webů, které nepoužívají HPOS? #
Na stránkách bez HPOS používá WooCommerce standardní WordPress. postmeta tabulka (například wp_postmeta) pro meta údaje o objednávce.
Na adrese postmeta... meta_hodnota sloupec je již definován jako DLOUHÝ TEXT, který může ukládat mnohem větší hodnoty než TEXT.
Z tohoto důvodu mohou weby, které nepoužívají HPOS, bezpečně ukládat velké hodnoty meta ticketů FooEvents bez jakýchkoli změn.
Pokud se s tímto problémem setkáte na webu, který není založen na HPOS, vy nebo váš vývojář jste pravděpodobně změnili datový typ meta_hodnota pole v WordPress postmeta tabulka.
Technické údaje #
- TEXT maximální délka: 65 535 bajtů.
- DLOUHÝ TEXT maximální délka: 4 GB.
FooEvents ukládá údaje o jednotlivých lístcích, jako například:
- ID vstupenek
- Údaje o účastnících
- Informace o akci
- Další meta vstupenky
Všechno je to serializováno do jediného meta_hodnota. U velkých objednávek může tento řetězec překročit hodnotu TEXT může ukládat, což způsobuje zkrácení a generování neplatných lístků.
Doporučená oprava #
Pokud používáte HPOS a očekáváte velké objednávky, změňte meta_hodnota sloupec v wc_objednávky_meta tabulka z TEXT na DLOUHÝ TEXT.
Důležité: To zahrnuje úpravu základní tabulky WooCommerce. Vždy nejprve zálohujte svou databázi. Pokud si na to netroufáte, požádejte o pomoc svého hostitele nebo vývojáře.
- Potvrďte název tabulky
Většina instalací bude používat: wp_wc_orders_meta
Pokud používáte vlastní předponu, proveďte příslušné úpravy (napříkladmyshop_wc_objednávky_meta). - Příklad spuštění příkazu SQL (upravte název tabulky podle potřeby)
ALTER TABLE `wp_wc_orders_meta` MODIFY `meta_value` LONGTEXT NULL; - Ověřit
- Ujistěte se, že dotaz proběhne bez chyb.
- Zadejte zkušební objednávku s velkým počtem lístků a ověřte, zda jsou lístky generovány podle očekávání.
Poruší to WooCommerce nebo HPOS? #
Ne. Tato změna je bezpečná a odpovídá způsobu, jakým WordPress již ukládá metadata:
- Jádro WordPress a WooCommerce již používají DLOUHÝ TEXT pro meta_hodnota v postmeta tabulka.
- Změna meta_hodnota na adrese wc_objednávky_meta z TEXT na DLOUHÝ TEXT pouze zvyšuje množství dat, které lze uložit; nemění způsob, jakým WooCommerce nebo FooEvents čtou nebo zapisují data.
To znamená:
- Vždy proveďte úplnou zálohu databáze první.
- V ideálním případě tuto změnu otestujte na stagingová stránka před jeho použitím ve výrobě.