sql >> Databasteknik >  >> RDS >> Mysql

Återställ woocommerce-ordrar

Det här fallet är ganska komplicerat, för som du kan gissa har du säkert i båda databaserna (i din backup och faktiska databaser) samma order-ID för olika order. När en order görs fyller den i databastabellerna "post", "postmeta" (och kanske några extra tabeller relaterade till woocommerce som vissa wooCommerce-plugins har skapat).

HÄMTA DE SAKNADE DATA:
Först i "post" säkerhetskopia tabell måste du hitta alla "post_id" med en shop_order "post_type", som börjar vid ett specifikt datum :
SELECT * FROM 'posts' WHERE 'post_date' > '2016-03-15 00:00:00' AND 'post_type' LIKE 'shop_order' ORDER BY 'post_id' ASC
(du måste ställa in korrekt startdatum och tid här)

Med alla dessa post_id du kommer att hämta all relaterade data i "postmeta"-tabellen:
SELECT * FROM 'postmeta' WHERE 'post_id' > 2059 ORDER BY 'meta_id' ASC
(du måste ersätta post_id "2059" av din motsvarande riktiga... )

FÖRBEREDAR NY DATA ATT INFOGA:
För "posts"-tabellen måste du flytta alla olika ID-nummer för "post_id", innan du infogar dem i din faktiska databas, med nya icke existerande ännu värden beroende på de ID:n som redan används av din faktiska databas.

För "postmeta"-tabellen måste du ersätta alla gamla "post_id" med de nya värdena som just genererats i din "posts"-tabell.

Du måste sätta din butik i underhållsläge för att undvika nya beställningar (till exempel med denna gratis Underhållsläge plugin)

Du måste vara van vid MySQL och jag tycker att det är bättre att testa allt i en duplicerad version av din webbshop. Gör säkerhetskopior innan...

Hälsningar




  1. MySQL-anslutningen fungerar inte:2002 Ingen sådan fil eller katalog

  2. Är primärnycklarna passé?

  3. hur man använder en sträng som formel för matematiska beräkningar i php?

  4. Starta och stoppa lokal mysql-instans från programmet