MySQL-Datenbankname mit Bindestrich

MySQL-Datenbankname mit Bindestrich

Ich habe vor Kurzem meinen Staging-Datenbankserver von MySQL 5.0.84 auf 5.1.72 aktualisiert. Ich versuche, den mysqldump nach dem Upgrade wiederherzustellen. Der Datenbankname im Dump ist gss-app. Aber der Datenbankordnername darunter /var/lib/mysqllautete gss@022dapp, aber wenn ich mich mit bei mysql anmelde mysql -u root -pund eingebe, wird nur show databases;der Datenbankname aufgeführt gss-appund ich kann Use Database gss-appdie Tabellen mit dem Befehl auflisten show tables.

Die Wiederherstellung schlug mit einem Fehler fehl Got a packet bigger than --max_allowed_packet size. Diesmal wurde die Datenbank teilweise wiederhergestellt und ich nutzte die Gelegenheit, um den gss@022dappOrdner umzubenennen gss-appund mich bei der MySQL-Shell anzumelden.

Der Datenbankname wurde als aufgeführt @mysql@gss-appund ich konnte nicht auf die Datenbank zugreifen. Jetzt führe ich die Datenbankwiederherstellung noch einmal mit aus --max_allowed_packet_size=1024Mund sehe, dass der gss@022dappOrdner in erstellt wurde /var/lib/mysql.

Muss ich mir über den Ordnernamen Gedanken machen /var/lib/mysql? Oder kann ich beim Wiederherstellen einen anderen Datenbanknamen verwenden?

Antwort1

Speziell zu Ihrer Frage, ob Sie beim Wiederherstellen einen anderen Namen verwenden möchten: Mit mysqldump können Sie entweder mysqldump databasenameoder verwenden mysqldump --databases databasename. Bei ersterem wird keine create dbAnweisung eingefügt, bei letzterem schon.

Wenn Sie den Dump mit der vorherigen Anweisung erstellt haben, können Sie einfach manuell eine neue Datenbank erstellen und den Dump mit etwas wie laden mysql newdbname < dump.sql. Im letzteren Fall können Sie einfach Ihre Dump-Datei öffnen und den Namen ändern.

Eine Randbemerkung: Ich denke übrigens, dass es ein schlechtes Design von MySQL ist, mysqldumpdiesen Unterschied zu haben. Wenn Sie ohne die --databasesAnweisung ein Backup erstellen, müssen Sie zuerst eine Datenbank erstellen, bevor Sie sie wiederherstellen können. Und diese Datenbank hat möglicherweise einen anderen Zeichensatz oder eine andere Sortierung als die ursprüngliche Datenbank. Meiner Meinung nach sollte eine Datenbank, die Sie sichern, alle Daten und Metadaten enthalten. Dasselbe gilt für die Angabe von --routinesund --events. Ich kann mir vorstellen, dass Optionen wie --no-routinespraktisch sein können, aber standardmäßignichtDumping-Routinen? Hmm.

verwandte Informationen