Ibland kan du behöva ångra ändringarna som gjorts i MySQL-databasen. Du kan enkelt göra det med MySQL Rollback-fråga. Så här återställer du MySQL-databasen med kommandot MySQL Rollback.
Hur fungerar MySQL-återställning
MySQL Rollback-sats låter dig återställa eller ångra ytterligare en sats som nyligen har körts. Till exempel, om du av misstag har tagit bort eller uppdaterat rader, kan du använda MySQL-återställning av dessa uttalanden och återställa ursprungliga databaser. MySQL-återställning fungerar dock endast om databasändringarna INTE har kopplats till databasen.
Bonusläs:Hur man använder MySQL-samling
Kan vi återställa efter commit i MySQL
Nej. Tyvärr kan du inte ångra ändringar som har registrerats i databasen.
Hur man återställer MySQL-databas
Observera att MySQL som standard är konfigurerat för att automatiskt utföra varje SQL-fråga. Så det är viktigt att stänga av automatisk commit i MySQL med följande uttalande, om du vill kunna använda MySQL Rollback.
Logga in på MySQL-databasen och kör följande kommando för att inaktivera autocommit
SET autocommit = 0
Eller
SET autocommit = OFF
Du använder följande uttalande för att aktivera autocommit-läget uttryckligen:
SET autocommit = 1
Eller
SET autocommit = ON
Bonus Läs:Hur man kontrollerar MySQL-version
Låt oss säga att du har följande tabell försäljning(produkt,orderdatum,rea) . Vi kommer att titta på hur man utfärdar MySQL-återställning efter delete-kommando.
mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
Låt oss nu stänga av autocommit som nämnts ovan,
mysql> set autocommit=0;
Låt oss sedan ta bort alla rader i försäljningstabellen.
mysql> delete from sales; Query OK, 5 rows affected (0.00 sec) mysql> select count(*) from sales; +----------+ | count(*) | +----------+ | 0 | +----------+
Som du kan se har alla de 5 raderna i försäljningstabellen tagits bort.
Låt oss nu utfärda MySQL Återställning efter raderingskommando
mysql> rollback; Query OK, 0 rows affected (0.07 sec) mysql> select count(*) from sales; +----------+ | count(*) | +----------+ | 5 | +----------+
Som du kan se har de 5 raderade raderna återställts sedan ändringarna inte genomfördes. Men om du hade problem med COMMIT-satsen efter radering och före ROLLBACK-kommandot, skulle MySQL inte ha återställt din tabell.
Bonus Läs:Hur man inaktiverar utländsk nyckelkontroll i MySQL
Kommando för MySQL Rollback Update
På samma sätt kan du återställa uppdateringskommandot. Låt oss uppdatera rean kolumnen i ovan försäljning bord.
mysql> set autocommit=0; mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+ 5 rows in set (0.00 sec) mysql> update sales set sale=sale*2; Query OK, 5 rows affected (0.05 sec) mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 40 | | B | 2020-01-02 | 50 | | B | 2020-01-03 | 30 | | A | 2020-01-04 | 60 | | A | 2020-01-05 | 40 | +---------+------------+------+
Som du kan se har vi fördubblat värdet på reakolumnen. Låt oss nu återställa uppdateringskommandot.
mysql> rollback; mysql> select * from sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-01-01 | 20 | | B | 2020-01-02 | 25 | | B | 2020-01-03 | 15 | | A | 2020-01-04 | 30 | | A | 2020-01-05 | 20 | +---------+------------+------+
Som du kan se har reakolumnen gamla värden återställts.
Du kan också inkludera MySQL-återställning i lagrade procedurer och MySQL-transaktioner för MySQL-återställning vid fel. Nyckeln är att inaktivera autocommit för att utföra MySQL-återställning.
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!