Ik laat automatisch een database backup genereren. Wanneer er iets fout zou gaan met de server wordt een complete map geupload inclusief installatie bestand. In dat installatie bestand wordt connectie met SQL aangemaakt en de backup teruggezet.
het probleem is dat de backup van de backup een erg irritante opmaak heeft.
Het #-teken is een comment in MySQL. Alles wat daarachter staat wordt dus automatisch genegeerd in een query.
Meestal kan je je backup zo instellen dat hij van elke tabel appart een backup maakt en kan je ook kiezen ofdat die DROP TABLE IF EXISTS moet worden toegevoegd of niet.
Ja, het liefste wel, alleen als ik rechtstreeks een create trable + droptable laat uitvoeren via php werkt het niet, laat ik dat droptable weg dan voegt hij de tabel wel in.
En @sam, een php script op de site maakt een backup van alle bestanden + db tabellen, dus hier kan ik verder neits aan veranderen (de opmaak).
Indien je echt jouw backup wilt gebruiken, zal je een scriptje moeten schrijven om alle regels met een # te verwijderen. En ook alle regels met drop table tot en met de eerste ";" verwijderen.
Er kunnen redelijk wat problemen optreden met system en mysqldump, maar in principe werkt het (lees als alles goed is ingesteld). volgende elementen kunnen misschien helpen:
Wordt er een lege dump gemaakt of helemaal niets?
Heb je geprobeerd echo system(...) uit te voeren om te zien welke error hij geeft?
Kan je de volledig mysqldump-commando eens posten (laat username en password maar blank, ik veronderstel dat deze juist zijn )
Ik zie dat safe_mode on staat, dit betekent dat system sowieso niet toegelaten is (hij zou wel een error moeten teruggeven). indien je geen toegang hebt tot php.ini, zal je een andere oplossing voor backups moeten vinden.
Als ik de pagina open wordt een bestand gedownload met de totale backup.
Het probleem is dat ik niet wil dat hij gedownload wordt maar in een rar gezet wordt (samen met alle andere bestanden).
Als ik headers weg doe en ipv echo de code een variabele geef, dan blifjt _mysqldump($mysql_database); leeg...
<?PHP?> wordt dan de output (zonder de middelste functie...
volgens mij maak je best eerst de file aan (mbv msqldump). Als je deze wil rarren met php, ga je moeilijkheden krijgen (hiervoor zijn zware omwegen nodig, rechtstreeks gaat niet omwille van licenties); daarom kies je beter voor zip (op de website van php vind je meer uitleg).
na het aanmaken van de file + eventuele compressie + saven op de server kan je volgende headers doorgeven aan de client: