Frage Wie benenne ich eine MySQL-Datenbank um?


Wie benenne ich eine MySQL-Datenbank um?

Das MySQL-Online-Handbuch hat über den Befehl RENAME DATABASE gesprochen (diese Dokumentationsseite wurde vor einiger Zeit von Oracle entfernt):

Diese Aussage wurde in MySQL 5.1.7 hinzugefügt, wurde aber als gefährlich eingestuft   wurde in MySQL 5.1.23 entfernt.

Also, wie weiter? Das Grundprinzip: Wir begannen mit einem Codenamen für das Projekt und möchten, dass der Name der Datenbank jetzt den endgültigen Namen des Projekts widerspiegelt.


38
2017-10-27 07:35


Ursprung


Alle vier Antworten ergeben Sinn. Es ist eine Frage mit vielen möglichen Lösungen. - nalply
stackoverflow.com/questions/12190000/rename-mysql-database/... - Sathish D
stackoverflow.com/questions/67093/... - Sathish D


Antworten:


Von diese Blogbeitrag von Ilan Hazan:

In MySQL wird die Umbenennung von Datenbanken nicht unterstützt. Um eine MySQL-Datenbank umzubenennen, können Sie einen der folgenden Schritte ausführen:

  1. Erstellen Sie eine neue Datenbank und benennen Sie alle Tabellen in der alten Datenbank in die neue Datenbank um:

    CREATE database new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
    DROP database db_name;
    
  2. Verwenden Sie in der Linux-Shell mysqldump, um die alte Datenbank zu sichern, und stellen Sie dann die ausgelagerte Datenbank unter einem neuen Namen mithilfe des MySQL-Dienstprogramms wieder her. Schließlich verwenden Sie den Befehl drop database, um die alte Datenbank zu löschen. Diese Option kann bei großen Datenbanken schlecht funktionieren.

    mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name"
    mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
    
  3. Schreiben Sie ein einfaches Linux-Skript (meine Lieblingslösung)

    #!/bin/bash
    
    mysqlconn="mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost"
    olddb=xxxx
    newdb=xxxx
    
    #$mysqlconn -e "CREATE DATABASE $newdb"
    params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
    
    for name in $params; do
          $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. Wenn alle Ihre Tabellen MyISAM sind, können Sie den alten Namen des Datenbankordners umbenennen:

    1. Schalte den MySQL-Server herunter,
    2. Benennen Sie den Namen des Datenbankordners in den neuen Namen um.
    3. Starten Sie den MySQL-Server.

48
2017-09-27 15:40



Hier ist eine alternative Möglichkeit, den Befehl rename table in SQL direkt in MySQL zu generieren: blog.marceloaltmann.com/how-to-rename-a-database-in-mysql - Yves Martin
Dies hilft beim Erstellen einer Abfrage für die erste Lösung. Kopieren Sie einfach die Pastenergebnisse hinter RENAME TABLE SELECT CONCAT('olddb.', TABLE_NAME, ' TO newdb.', TABLE_NAME, ',') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='olddb';; - Syclone
Wenn Sie die Daten jedoch nicht in die neue Datenbank einfügen, gehen sie verloren - rainman
Danke. Dies ist die beste Antwort. Ich danke dir sehr! - daixtr


MySQL saugt das irgendwie. Die einzige solide zuverlässige Lösung ist zu verwenden phpMyAdmin.

Login -> klicken  Scheme -> klicken  Operations -> finden Rename database to: -> schreibe NewName > klicken  Go.

So einfach ist das. Alle Berechtigungen werden übertragen.


9
2017-10-27 07:42



+1 für eine GUI-Lösung, aber die einfachen Befehle und Skripte in der Community-Wiki-Antwort sind auch perfekt "solide und zuverlässig" - Will Sheppard


Ich neige dazu, eine neue Datenbank zu erstellen, und dann die Tabellen aus dem alten auszugeben, in eine .sql-Datei (mit mysqldump), die Datei zu bearbeiten, eine Art von s/old_database/new_database/g und dann reimportieren Sie es in die neue db.
Wahrscheinlich nicht der beste Weg, aber es funktioniert.


4
2017-10-29 13:50





Ich fand eine sehr einfache Lösung: Schalte MySQL herunter, benenne das Datenbankverzeichnis um und starte neu. Das ist alles!

Es ist ein bisschen gefährlich, wenn Sie SQL-Code oder Daten haben, die sich auf den alten Namen beziehen. Dann müssen Sie dies ändern, bevor Sie die Anwendung neu starten. Aber ich musste das nicht tun, aber YMV.

Googlen gibt ein paar Hinweise wie diese beiden:

https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

http://www.delphifaq.com/faq/databases/mysql/f574.shtml


4
2017-09-11 05:26





Ich habe folgende Methode verwendet, um die Datenbank umzubenennen

  1. Erstellen Sie eine Sicherungskopie der Datei mit mysqldump oder einem anderen DB Tool, zB HeidiSQL, mysql administrator etc

  2. Öffnen Sie die Backup-Datei (zB backupfile.sql) in einem Texteditor.

  3. Suchen und ersetzen Sie den Datenbanknamen und speichern Sie die Datei.

  4. Stellen Sie die bearbeitete Sql-Datei wieder her


1
2017-10-27 08:53





Wenn Sie die Möglichkeit haben, ein MySQL Management-Tool (z. B. phpMyAdmin) zu verwenden, können Sie es leicht umbenennen, während sie die Abfrage für Sie erstellen.

In phpMyAdmin erstellen sie auch jede Tabelle und fügen die Daten durch "INSERT INTO ... SELECT * FROM ..." ein. Also kopieren sie die Daten durch Verketten.

Wenn Sie dies nicht tun können, würde ich empfehlen, einen Dump zu machen und die sql-Datei in eine neue Datenbank zu importieren.

Viel Glück!

Grüße, Ben.


0