WPLounge
0 ids in posts database tabel
Home » Developers » Database auto increment problemen WPLounge

Database auto increment problemen WPLounge

Afgelopen week waren er problemen met het afrekenen in onze shop op Shop.wplounge.nl. Er was lichte paniek aangezien er niet meer afgerekend kan worden vanuit WooCommerce. Later blijkt ook dat nieuwe berichten niet aangemaakt worden, kortingscodes niet toegepast op winkelmandjes, de site wordt traag…wat was er aan de hand? Hieronder de beschrijving van het probleem.

Affiliate disclaimer:
In onze artikelen en op onze pagina's staan affiliate links. Wanneer je via één van deze links een aankoop doet, ontvangen wij een (meestal kleine) commissie van de verkoper. Wij geven altijd onze eerlijke mening over producten. Klik hier voor meer informatie.

Uiteindelijk was alles terug te leiden tot een verkeerd geïmporteerde database tijdens het verhuizen van de site naar een andere host. Het geniepige van dit geval is dat de site het doet, alle pagina’s worden netjes weergegeven, producten worden wel netjes in het winkelmandje gezet. Je komt er dus pas een week later achter dat je bestellingen mis loopt…

Wat was hier aan de hand? (Waarschuwing: nu wordt het technisch!)

De korte versie is dat bij de import de ‘Unique Keys’ en ‘Auto Increments’ niet goed waren mee gekomen. Met bestaande data gaat het goed, maar iets nieuws aanmaken lukt in WordPress dan niet meer.

TIP VAN WPLOUNGE
Divi theme & Divi Builder
Bij Elegant Themes ontvang je meer dan
85 premium WordPress themes (waaronder Divi!) voor maar 89 dollar!

Bekijk de themes »»
Lees meer over Divi.

In de database wordt gebruik gemaakt van id’s, elke regel heeft een uniek nummer. Zo heeft elke pagina een eigen nummer, elk bericht ook, elk product in WooCommerce, elke order (en elke orderregel). Als er iets nieuws wordt aangemaakt, moet deze een nieuw nummer krijgen. Welk nummer dit is, bepaald de database, die houdt van elke tabel bij welke kolom een uniek nummer moet zijn en wat het laatst uitgegeven nummer is.

0 ids in order_items in database

Weet de database dit niet meer, dan krijgt elk nieuw aangemaakte ‘iets’ in WordPress het nummer ‘0’. De eerste keer is dat nummer  misschien nog uniek, de tweede keer zeker niet meer en dan begint het probleem. Het id wordt namelijk gebruikt om gegevens op te halen uit de database. WordPress verwacht één resultaat terug te krijgen, maar krijgt er meer dan één. En dat kan snel oplopen, in de bewuste database stonden bijvoorbeeld ruim 500.000 comments die aangemaakt waren door de WooCommerce Scheduled Actions, allemaal met id ‘0’…

Voor de standaard tabellen van WordPress en Woocommerce is wel terug te vinden welke Unique Keys en Auto Increments je aan moet maken. Dit geeft al aan dat dit vaker gebeurt. Let wel op, per versie WordPress kan dit anders zijn, zorg dat je de gegevens voor de juiste versie hebt. Voor de niet standaard tabellen, aangemaakt door plugins die geïnstalleerd zijn, is deze informatie  moeilijker terug te vinden. Een uitweg kan zijn om op een dummy site dezelfde plugins te installeren en in die database te kijken wat de instellingen zijn.

0 ids in posts database tabel

Hoe los je het op?

Gelukkig is de oplossing meestal niet al te moeilijk. In ons geval konden we een database backup van de verhuizing gebruiken. Een tweetal bestellingen zijn hierdoor in de database verloren gegaan, meer niet. Heb je geen backup, dan heb je twee keuzes:
1- Je site opnieuw opbouwen vanaf scratch:
a. Gebruik een export/import of verhuis plugin om je data over te zetten.
b. Kopieer je templates via FTP, al je wijzigingen blijven zo behouden.

2- Al je database tabellen nalopen en goed zetten:
a. Installeer een dummy website om de juiste instellingen te vinden voor tabellen waarvan je de instellingen niet op internet terug kunt vinden.
b. Kijk of je naast Unique Keys en Auto Increments misschien ook Indexes kwijt bent. Indexes zorgen er voor dat gegevens sneller uit de database opgehaald kunnen worden; ze zorgen dus voor een snellere website.
c. De waarde van de auto increment moet ook goed gezet worden. Zoek het hoogste id in de betreffende tabel en zet de auto increment waarde 1 hoger.

Hoe voorkom je dit?

Nog beter dan je probleem oplossen is natuurlijk om te voorkomen dat het zich voordoet. Meestal ontstaat dit probleem bij een verhuizing. Om zeker te zijn dat je website goed verhuist is en dit probleem zich niet voordoet, kun je de volgende checks uitvoeren:
1- Check na de export van de database of de Unique Keys en Auto Increments mee zijn genomen
2- Check na de import of deze ook in je nieuwe database mee zijn gekomen
3- Maak minimaal twee berichten, twee pagina’s en twee orders (indien je gebruik maakt van WooCommerce) aan. Geeft de tweede een fout, dan kan het hierboven omschreven probleem aan de hand zijn.

Met dank aan Maathosting voor oplossing van het probleem.

Beoordeel dit artikel

Roger.Overdevest

Roger is een SEO specialist met veel passie voor WordPress

2 reacties