sql >> Database teknologi >  >> RDS >> Mysql

Gendan woocommerce-ordrer

Denne sag er ret kompliceret, for som du kan gætte, har du helt sikkert i begge databaser (i din backup og faktiske databaser) det samme ordre-id for forskellige ordrer. Når en ordre er lavet, udfyldes databasetabellerne "post", "postmeta" (og måske nogle ekstra tabeller relateret til woocommerce, som nogle wooCommerce plugins har lavet).

HENTNING AF DE MANGLENDE DATA :
Først i "post" backup tabel skal du finde alle "post_id" med en shop_order "post_type", begyndende på en bestemt dato :
SELECT * FROM 'posts' WHERE 'post_date' > '2016-03-15 00:00:00' AND 'post_type' LIKE 'shop_order' ORDER BY 'post_id' ASC
(du skal indstille den korrekte startdato og -tid her)

Med alle de post_id du vil hente alle de relaterede data i "postmeta"-tabellen:
SELECT * FROM 'postmeta' WHERE 'post_id' > 2059 ORDER BY 'meta_id' ASC
(du skal erstatte post_id "2059" af din tilsvarende rigtige... )

FORBEREDELSE AF NYE DATA TIL AT INDSÆTTE :
For "posts"-tabellen skal du flytte alle de forskellige ID-numre for "post_id", før du indsætter dem i din faktiske database, med nye ikke-eksisterende værdier afhængigt af de ID'er, der allerede er brugt af din faktiske database.

For "postmeta"-tabel skal du erstatte alle gamle "post_id" med de nye værdier, der lige er genereret i din "posts"-tabel.

Du bliver nødt til at sætte din butik i vedligeholdelsestilstand for at undgå nye ordrer (for eksempel med denne gratis Vedligeholdelsestilstand plugin)

Du skal være vant til MySQL, og jeg synes, det er bedre at teste alt i en duplikeret version af din webshop. Lav sikkerhedskopier før...

Med venlig hilsen




  1. Brug en fagforening eller et medlem - hvad er hurtigere

  2. Observer Overhead og Vent Type Symptomer

  3. mysqldump virker ikke i crontab

  4. hvordan sammenligner jeg to rækker og gemmer lighederne mellem de to rækker i en anden kolonne