Ich habe eine MySQL-Datenbank und versuche, eine Möglichkeit zu finden, nur deren Struktur ohne die automatischen Inkrementwerte zu exportieren. mysqldump --no-data
würde fast den Job machen, aber es behält die auto_increment-Werte. Gibt es eine Möglichkeit, dies ohne PHPMyAdmin zu tun (von dem ich weiß, dass es das kann)?
87
--no-data
standardmäßig die Werte für die automatische Inkrementierung weggelassen.Antworten:
Du kannst das :
Wie bereits von anderen erwähnt, Wenn Sie
sed
richtig funktioniert, fügen Sie deng
(für g lobaler Ersatz) Parameter wie folgt aus :(dies funktioniert nur , wenn Sie GUI - Tools installiert haben:
mysqldump --skip-auto-increment
)Neues UPDATE dank Kommentaren.
Das
\b
ist nutzlos und bricht manchmal den Befehl. Erläuterungen finden Sie in diesem SO-Thema . Die optimierte Antwort wäre also:quelle
--skip-auto-increment
eine echte Option ist. Ich kann es nicht in der Dokumentation finden . Keiner der beiden MySQL-Fehler für dieses Problem erwähnt es: 20786 , 30957 . Welche Version von mysqldump hat diese Option?--skip-auto-increment
ist eine Option, die in den MySQL GUI Tools hinzugefügt wurde, wenn Sie sich richtig erinnern. (nicht sicher ^^) Tatsächlich ist es also keine wirkliche Lösung! Aber der zweite Inline-Befehl ist korrekt. Ich habe ihn hier gegründet, wo das Thema Autoincrement- Problem behandelt wird, und die Idee dessed
Filterns bereitgestellt!JoDevs Antwort funktionierte perfekt für mich mit einer kleinen Anpassung des sed regulären Ausdrucks:
quelle
\b
in der sed-Anweisung bewirkt, aber gemäß dem Vorschlag von @ JohnW hier ist das Entfernen dieses Schalters auch für mich der Trick.Es sind standardmäßig --create-options, die in --opt enthalten sind, die die Tabellendefinitionen AUTO_INCREMENT generieren.
Wenn Sie nur die Basistabellen möchten,
Wenn Sie auch Ansichten, Trigger und Routinen wünschen,
quelle
drop table
Zeichen, Zeichensätze usw. für die automatische InkrementierungDank dieses Beitrags konnte ich meine Frage beantworten:
Dann habe ich gerade dieses Skript erstellt:
db_bkp.sh
Dann habe ich dies zu crontab hinzugefügt:
Dann habe ich in meinem Repo das Ergebnis
db_structure.sql
zu git hinzugefügt und bevor ich Änderungen an prod vorgenommen habe, überprüfe ich immer, ob es strukturelle Änderungen gibt, die ich bei allen dbs vergessen habe.quelle
mysqldump -u [USER] -p [PASSWORD] -d --skip-opt --single-transaction [DB_SCHEMA]> [FILE.ESTENSIONE]
quelle
--skip-opt
hier und hier