show create table
Ik heb een db-backupscript dat logischerwijze ook gebruikt maakt van "show create table"
Echter staat daar ook "AUTO_INCREMENT=value" Is er een mogelijkheid om dit te verwijderen via sql? een extra optie of zo?
Indien niet weet iemand een goede regex om het te doen via php?
Jan
Hou er wel rekening mee dat als je de backup maakt zonder je keys dat je relaties hoogst waarschijnlijk om zeep geholpen worden op het moment dat je de backup terug zet
Toch bedankt.
Waarom gebruik je geen mysqldump?
Eigen bouwsels zullen eigenlijk altijd wel tekortkomingen hebben: of je vergeet triggers, procedures. Of de volgorde van terugzetten van data gaat niet op volgorde met FK restricties die *soms* problemen geven.
Vooral *soms* is vervelend als je test wel goed gaat, maar in geval van problemen je backup onbruikbaar blijkt.
Terug naar je vraag: waarom zou je de auto-increment value leeg willen hebben? als die op 1023 staat dan zullen je backup-terugzet-insert-query's die eerste 1022 toch wel netjes vullen? En je wilt ook niet dat als je teller op 1023 staat en je de laatste 23 wist, je na de backup ineens weer opnieuw 1001 tm 1022 gaat aanmaken na nieuwe inserts.
Toevoeging op 16/05/2023 10:22:12:
"En dan wil ik niet dat de increment soms start over de 1000 "
Want? heeft dat id een betekenis voor jou? Zo te zien heeft het topic hier op PHPHulp id 104707.
Is dat voor iemand interessant?
Wat het beter geweest als dit getal deelbaar was door 5, of dat het even was? Waarom zou dat kleiner dan 1000 moeten zijn?
Zie het ID als je BSN: het is een uniek getal, maar de waarde ervan is onbelangrijk.
Zelf denk ik dat schijn bedriegt, want je kan vaak wel chmod-rechten instellen, en een cronjob draaien.
Dus als je een db_backup.sh bestand maakt met onderstaande code erin, en die op een tijdstip dichtbij laat draaien, dan wordt er in luttele seconden een dumpje gemaakt, zonder dat PHP erbij komt kijken. Ter informatie: Mijn database van 80 MB wordt in enkele tellen al omgezet naar een SQL-file. Via phpMyAdmin duurt het aanzienlijk langer omdat alles stuk voor stuk in het geheugen lijkt te worden geladen, wat vaak beperkt is.
Zorg er wel voor dat je het .sh uitvoerbaar maakt met chmod, wat vaak via de filemanager in je hostingpaneel gaat, of via (S)FTP.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
# MySQL-verbindingsgegevens
DB_HOST="localhost"
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="database_name"
# Uitvoerbestand voor de dump
OUTPUT_FILE="/path/to/output/dump.sql"
# MySQL-dump uitvoeren
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME > $OUTPUT_FILE
# MySQL-verbindingsgegevens
DB_HOST="localhost"
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="database_name"
# Uitvoerbestand voor de dump
OUTPUT_FILE="/path/to/output/dump.sql"
# MySQL-dump uitvoeren
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME > $OUTPUT_FILE
Na afloop kan je altijd omgekeerd een SQL-file uitvoeren met de 'mysql' binary om wat data aan te passen. Zo zorg ik er bijvoorbeeld voor dat de Twitter API key's van de live database worden vervangen. Je wilt niet graag tweets of notificaties uit je testomgeving naar de liveomgeving brengen.
Gewijzigd op 16/05/2023 11:52:56 door - Ariën -
- Ariën - op 16/05/2023 09:06:22:
Waarom gebruik je geen mysqldump?
Stomme provider ondersteunt dat niet. Geen uitvoering mogelijk via eender welk uitvoerbaar bestand :( Ook al geen cron-jobs. Het zou anders wel ne dump worden.
Ik gebruik geen mysql procedures.
Ik wil starten bij 1, het begin. Misschien stom maar mijn brein is nu eenmaal soms een beetje raar :)
Toch allen bedankt.
Op mijn eigen server heb ik wel een dump-scriptje. Ik start het wel manueel omdat die db weinig wijzigt. Maakt zelf een map aan met de datum En de bestandsnaar bevat de ook de tijd.
Jan
Misschien werkt het wel via een pad.
Gewijzigd op 17/05/2023 01:05:32 door - Ariën -
disable_functions disk_total_space, diskfreespace, exec, system, popen, proc_open, proc_nice, shell_exec, passthru, dl
Wel matig. :-/
Sommige providers ondersteunen database-connecties van buitenaf. In dat geval zou je MySQL op je eigen computer kunnen installeren en op die manier via mysqldump een backup maken. Je moet dan de parameter "-h <hostname>" opgeven, waarbij <hostname> de DNS-naam of het IP-adres is van de database-server van je provider.