Dit wordt waarschijnlijk veroorzaakt door een beperking van het gegevenstype in de database van uw site. FooEvents slaat ticketgegevens voor een bestelling op in een enkele geserialiseerde meta_waarde. Bij grote bestellingen (ongeveer 30+ tickets in één bestelling, afhankelijk van hoeveel gegevens elk ticket opslaat) kan die geserialiseerde waarde de maximaal toegestane grootte voor een TEKST veld. Wanneer dat gebeurt:
- De order meta is afgekapt of niet volledig opgeslagen.
- FooEvents beschikt niet over alle gegevens die het verwacht.
- Tickets voor die bestelling kunnen niet correct worden gegenereerd of helemaal niet.
Wie wordt hierdoor getroffen? #
Dit zou alleen van invloed moeten zijn op winkels die:
- Hebben HPOS (WooCommerce High-Performance Order Storage) ingeschakeld.
- Verwacht te verwerken grote bestellingen (ongeveer 30 of meer tickets in één bestelling).
Als u niet gebruiken HPOS, zou u hier geen last van moeten hebben.
Waarom heeft dit geen invloed op niet-HPOS-sites? #
Op niet-HPOS-sites gebruikt WooCommerce de standaard WordPress. postmeta tabel (bijvoorbeeld wp_postmeta) voor ordermeta.
In postmetade meta_waarde kolom is al gedefinieerd als LANG TEKST, die veel grotere waarden kan opslaan dan TEKST.
Daarom kunnen niet-HPOS-sites grote FooEvents-ticketmetawaarden veilig opslaan zonder enige wijzigingen.
Als u dit probleem ondervindt op een niet-HPOS-site, hebben u of uw ontwikkelaar mogelijk het gegevenstype van de meta_waarde veld in de WordPress postmeta tafel.
Technische details #
- TEKST maximale lengte: 65.535 bytes.
- LANG TEKST maximale lengte: 4 GB.
FooEvents slaat gegevens per ticket op, zoals:
- Ticket-ID's
- Gegevens van deelnemers
- Evenementinformatie
- Extra ticketmeta
Dat alles wordt geserialiseerd in één enkel meta_waarde. Bij grote bestellingen kan die reeks langer zijn dan wat TEKST kan opslaan, wat leidt tot afkapping en het genereren van onvolledige tickets.
Aanbevolen oplossing #
Als u HPOS gebruikt en grote bestellingen verwacht, wijzig dan de meta_waarde kolom in de wc_bestellingen_meta tabel uit TEKST naar LANG TEKST.
Belangrijk: Hiervoor moet u een WooCommerce-kern tabel aanpassen. Maak altijd eerst een back-up van uw database. Als u dit niet vertrouwd vindt, vraag dan uw host of een ontwikkelaar om hulp.
- Bevestig de tabelnaam
De meeste installaties gebruiken: wp_wc_orders_meta
Als u een aangepast voorvoegsel gebruikt, pas dit dan dienovereenkomstig aan (bijvoorbeeldmijnwinkel_wc_bestellingen_meta). - Voorbeeld: voer de SQL-opdracht uit (pas de tabelnaam dienovereenkomstig aan)
ALTER TABLE `wp_wc_orders_meta` MODIFY `meta_value` LONGTEXT NULL; - Verifiëren
- Zorg ervoor dat de query zonder fouten wordt voltooid.
- Plaats een testbestelling met een groot aantal tickets en controleer of de tickets worden gegenereerd zoals verwacht.
Zal dit WooCommerce of HPOS doorbreken? #
Nee. Deze wijziging is veilig en sluit aan bij de manier waarop WordPress meta al opslaat:
- WordPress-kern en WooCommerce worden al gebruikt LANG TEKST voor meta_waarde in de postmeta tafel.
- Veranderen meta_waarde in wc_bestellingen_meta van TEKST naar LANG TEKST verhoogt alleen de hoeveelheid gegevens die kan worden opgeslagen; het verandert niets aan de manier waarop WooCommerce of FooEvents de gegevens leest of schrijft.
Dat gezegd hebbende:
- Altijd maak een volledige databaseback-up eerst.
- Test deze wijziging idealiter op een testomgeving voordat het in productie wordt genomen.