it-swarm.com.de

Wie benenne ich eine MySQL-Datenbank um?

Wie benenne ich eine MySQL-Datenbank um?

Das MySQL-Online-Handbuch enthält Informationen zum Befehl RENAME DATABASE (diese Dokumentationsseite wurde vor einiger Zeit von Oracle entfernt):

Diese Anweisung wurde in MySQL 5.1.7 hinzugefügt, jedoch als gefährlich eingestuft und in MySQL 5.1.23 entfernt.

Wie geht es weiter? Das Grundprinzip: Wir haben mit einem Codenamen für das Projekt begonnen und möchten, dass der Datenbankname jetzt den endgültigen Namen des Projekts widerspiegelt.

53
nalply

Von this Blogbeitrag von Ilan Hazan:

In MySQL wird das Umbenennen von Datenbanken nicht unterstützt. Um eine MySQL-Datenbank umzubenennen, haben Sie folgende Möglichkeiten:

  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 Linux Shell mysqldump, um die alte Datenbank zu sichern, und stellen Sie dann die gedumpte Datenbank unter einem neuen Namen mit dem Dienstprogramm MySQL wieder her. Verwenden Sie abschließend den Befehl drop database, um die alte Datenbank zu löschen. Diese Option kann bei großen Datenbanken eine schlechte Leistung erbringen.

    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
    
    dbuser=xxxx
    dbpass=xxxx
    olddb=xxxx
    newdb=xxxx
    
    mysqlconn="mysql -u $dbuser -p$dbpass -h localhost"
    
    $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";
          echo "Renamed $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. Wenn alle Ihre Tabellen MyISAM sind, können Sie den alten Datenbankordnernamen umbenennen:

    1. Fahren Sie den MySQL-Server herunter.
    2. Benennen Sie den Namen des Datenbankordners in den neuen Namen um.
    3. Starten Sie den MySQL-Server.
63
alexeit

MySQL ist irgendwie beschissen. Die einzige solide zuverlässige Lösung ist die Verwendung von phpMyAdmin.

Login -> click Scheme -> click Operations -> find Rename database to: -> schreibe NewNameclick Go.

So einfach ist das. Alle Berechtigungen werden übertragen.

12
spencerthayer

Ich habe eine sehr einfache Lösung gefunden: MySQL herunterfahren, das Datenbankverzeichnis umbenennen und neu starten. Das ist alles!

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

Googeln 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

7
nalply

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

5
Tom O'Connor

Ich habe die folgende Methode verwendet, um die Datenbank umzubenennen

  1. erstellen Sie eine Sicherungskopie der Datei mit mysqldump oder einem anderen DB-Tool, z. B. heidiSQL, mysql-Administrator usw.

  2. Öffnen Sie die Sicherungsdatei (z. B. 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

2
Adarsha

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

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

Wenn Sie dies nicht tun können, würde ich empfehlen, einen Speicherauszug zu erstellen und die SQL-Datei erneut in eine neue Datenbank zu importieren.

Viel Glück!

Grüße, Ben.

2