Najprawdopodobniej jest to spowodowane ograniczeniami typu danych w bazie danych Twojej witryny. FooEvents przechowuje dane dotyczące biletów dla danego zamówienia w jednym serializowanym meta_value. W przypadku dużych zamówień (około 30+ biletów w jednym zamówieniu, w zależności od ilości danych przechowywanych w każdym bilecie) ta wartość serializowana może przekroczyć maksymalny rozmiar dozwolony dla TEKST pole. Kiedy tak się stanie:
- Meta zamówienia to skrócone lub nie w pełni zapisane.
- FooEvents nie posiada wszystkich oczekiwanych danych.
- Bilety na to zamówienie mogą nie być generowane poprawnie lub w ogóle.
Kogo to dotyczy? #
Powinno to dotyczyć wyłącznie sklepów, które:
- Mieć HPOS (WooCommerce High-Performance Order Storage) włączone.
- Spodziewaj się przetwarzania duże zamówienia (około 30 lub więcej biletów w jednym zamówieniu).
Jeśli jesteś nie używając HPOS, nie powinno to mieć na Ciebie wpływu.
Dlaczego nie ma to wpływu na witryny inne niż HPOS? #
W witrynach innych niż HPOS, WooCommerce używa standardowego WordPress. postmeta tabela (na przykład wp_postmeta) dla meta danych zamówienia.
W postmetaw meta_value kolumna jest już zdefiniowana jako DŁUGI TEKST, który może przechowywać znacznie większe wartości niż TEKST.
Dzięki temu witryny inne niż HPOS mogą bezpiecznie przechowywać duże wartości metadanych biletów FooEvents bez żadnych zmian.
Jeśli problem ten występuje w witrynie innej niż HPOS, możliwe, że użytkownik lub programista zmienił typ danych meta_value pole w WordPress postmeta tabela.
Szczegóły techniczne #
- TEKST maksymalna długość: 65 535 bajtów.
- DŁUGI TEKST maksymalna długość: 4 GB.
FooEvents przechowuje dane dotyczące poszczególnych biletów, takie jak:
- Identyfikatory biletów
- Szczegóły dotyczące uczestników
- Informacje o wydarzeniu
- Dodatkowe informacje o bilecie
Wszystko to jest serializowane do pojedynczego meta_value. W przypadku dużych zamówień ta liczba może przekroczyć TEKST może przechowywać, powodując skracanie i generowanie uszkodzonych biletów.
Zalecane rozwiązanie #
Jeśli korzystasz z HPOS i spodziewasz się dużych zamówień, zmień meta_value kolumna w wc_zamówienia_meta tabela z TEKST do DŁUGI TEKST.
Ważne: Wymaga to modyfikacji tabeli podstawowej WooCommerce. Zawsze najpierw wykonaj kopię zapasową bazy danych. Jeśli nie czujesz się komfortowo wykonując tę czynność, poproś o pomoc administratora serwisu lub programistę.
- Potwierdź nazwę tabeli
Większość instalacji będzie korzystać z: wp_wc_orders_meta
Jeśli używasz niestandardowego prefiksu, dostosuj odpowiednio (na przykładmyshop_wc_zamówienia_meta). - Przykładowe uruchomienie polecenia SQL (odpowiednio dostosuj nazwę tabeli)
ALTER TABLE `wp_wc_orders_meta` MODIFY `meta_value` LONGTEXT NULL; - Zweryfikuj
- Upewnij się, że zapytanie zostało wykonane bez błędów.
- Złóż zamówienie testowe na dużą liczbę biletów i sprawdź, czy bilety zostały wygenerowane zgodnie z oczekiwaniami.
Czy to przełamie WooCommerce lub HPOS? #
Nie. Ta zmiana jest bezpieczna i zgodna z tym, jak WordPress już przechowuje metadane:
- Rdzeń WordPress i WooCommerce już używane DŁUGI TEKST dla meta_value w postmeta tabela.
- Zmiana meta_value w wc_zamówienia_meta z TEKST do DŁUGI TEKST po prostu zwiększa ilość danych, które można przechowywać; nie zmienia sposobu odczytu lub zapisu danych przez WooCommerce lub FooEvents.
To powiedziawszy:
- Zawsze wykonaj pełną kopię zapasową bazy danych pierwszy.
- Najlepiej przetestować tę zmianę na strona testowa przed zastosowaniem go w produkcji.