Doe verder bij fouten
Ik heb een backup en restore script. Soms sluipt daar een fout in. Hoe kan ik de restore doen verder lopen als er een fout optreed en toch nog de fouten zien.
Nu doe ik elk commando afzonderlijk via een array maar dit is redelijk traag op mijn nas. Bijna 6 min.
Voorbeeld bestand
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Called from: 1.2.3.4
DROP TABLE IF EXISTS VIER_aside;
CREATE TABLE VIER_aside (
id int(11) NOT NULL AUTO_INCREMENT,
titel text COLLATE utf8_unicode_ci NOT NULL,
tekst text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO VIER_aside VALUES("1", "Winnaar 2015-2016", "Het toernooi 2015-2016 is gewonnen door SKVV ");
INSERT INTO VIER_aside VALUES("4", "2016-2017", "Het toernooi 2016-2017 zal doorgaan te Laarne op 17 oktober, 13 februari en 8 mei");
INSERT INTO VIER_aside VALUES("6", "Winnaar 2016-2017", "Het toernooi 2016-2017 is gewonnen door SC Gentbrugge");
DROP TABLE IF EXISTS VIER_aside;
CREATE TABLE VIER_aside (
id int(11) NOT NULL AUTO_INCREMENT,
titel text COLLATE utf8_unicode_ci NOT NULL,
tekst text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO VIER_aside VALUES("1", "Winnaar 2015-2016", "Het toernooi 2015-2016 is gewonnen door SKVV ");
INSERT INTO VIER_aside VALUES("4", "2016-2017", "Het toernooi 2016-2017 zal doorgaan te Laarne op 17 oktober, 13 februari en 8 mei");
INSERT INTO VIER_aside VALUES("6", "Winnaar 2016-2017", "Het toernooi 2016-2017 is gewonnen door SC Gentbrugge");
in werkelijkheid zijn er 58 tabellen . op het einde heb ik deze melding
Code (php)
1
2
3
4
5
2
3
4
5
Restore gedaan!
Opdrachten: 40516
Fouten: 0
Bestandsgrootte: 4 848 789
Duur: 00:01:51.171
Opdrachten: 40516
Fouten: 0
Bestandsgrootte: 4 848 789
Duur: 00:01:51.171
Jan
Gewijzigd op 19/05/2018 08:31:27 door Jan R
Maar even copy+paste van de buren ( https://stackoverflow.com/questions/11263018/mysql-ignore-errors-when-importing )
Mijn script is php en gezien de back-up wijzigt van naam kan ik dit in een cmd-bestand niet automatiseren onder Windows laat staan op de nas. Nu doe ik een restore via http://localhost/backup/restore.php?file=www.xxxx.be_db-backup-20180519-1111_0e442f493f0b75149799e90bbfa694e1.sql
De verschillende bestanden worden via glob getoont in een <a> tag
De command-line toont ook niet waar de fout zit. at line klopt niet
Localhost wijzigt natuurlijk als ik op de nas werk
Jan
Toevoeging op 19/05/2018 11:24:48:
ps: nu alle fouten opgelost zijn doet de commandline er even lang over als het php script via array
Quote:
Soms sluipt daar een fout in.
Als je op een of andere manier (beter kunt) garanderen dat dat niet gebeurt zou dat natuurlijk beter zijn.
Backups en restores zouden ongeforceerd moeten werken, anders is dat een indicatie dat er iets mis is met de integriteit van je data. Dan krijg je toch een beetje de situatie zoals iemand placht te zeggen "shit in, shit out".