web-dev-qa-db-ja.com

MySQLデータベースの名前を変更するには?

MySQLデータベースの名前を変更するには?

MySQLオンラインマニュアルはRENAME DATABASEコマンドについて述べています(このドキュメントページはOracleによって少し前に削除されました)。

このステートメントはMySQL 5.1.7で追加されましたが、危険であることが判明し、MySQL 5.1.23で削除されました。

それで、どうやって進むのですか?理論的根拠:プロジェクトのコード名から始め、データベース名にプロジェクトの明確な名前を反映させたいと考えています。

53
nalply

Ilan Hazanによる this ブログ投稿から:

MySQLでは、データベースの名前変更はサポートされていません。 MySQLデータベースの名前を変更するには、次のいずれかを実行します。

  1. 新しいデータベースを作成し、古いデータベースのすべてのテーブルの名前を新しいデータベースに変更します。

    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. Linuxシェルで、mysqldumpを使用して古いデータベースをバックアップし、次に、MySQLユーティリティを使用して、ダンプされたデータベースを新しい名前で復元します。最後に、drop databaseコマンドを使用して、古いデータベースを削除します。このオプションは、大規模なデータベースではパフォーマンスが低下する可能性があります。

    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. 簡単なLinuxスクリプトを書く(私のお気に入りのソリューション)

    #!/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. すべてのテーブルがMyISAMの場合、古いデータベースフォルダー名を変更できます。

    1. MySQLサーバーをシャットダウンします。
    2. データベースフォルダ名を新しい名前に変更します。
    3. MySQLサーバーを起動します。
63
alexeit

MySQLはちょっとこれに負けます。信頼できる唯一の解決策は、phpMyAdminを使用することです。

Login-> click Scheme-> click Operations->検索Rename database to:->書き込みNewNameclick Go

それと同じくらい簡単です。すべての権限が引き継がれます。

12
spencerthayer

MySQLをシャットダウンし、データベースディレクトリの名前を変更して再起動するという非常に簡単な解決策を見つけました。それで全部です!

古い名前を参照するSQLコードまたはデータがある場合は、少し危険です。次に、アプリケーションを再起動する前に、それも変更する必要があります。しかし、私はそれをする必要がなかったが、YMV。

グーグルはこれらの2つのようないくつかのポインターを与えます:

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

私は新しいデータベースを作成する傾向があり、古いデータベースからテーブルを.sqlファイルに(mysqldumpで)ダンプし、ファイルを編集し、何らかの種類のs/old_database/new_database/gし、それを新しいデータベースに再インポートします。
おそらくそれを行うための最良の方法ではありませんが、機能します。

5
Tom O'Connor

次の方法でデータベースの名前を変更しました

  1. mysqldumpまたは任意のDBツール(heidiSQL、mysql管理者など)を使用してファイルのバックアップを取ります。

  2. いくつかのテキストエディタでバックアップファイル(backupfile.sqlなど)を開きます。

  3. データベース名を検索して置き換え、ファイルを保存します。

  4. 編集したSQLファイルを復元する

2
Adarsha

MySQL管理ツール(phpMyAdminなど)を使用する機会がある場合は、クエリを作成するときに簡単に名前を変更できます。

PhpMyAdminでは、各テーブルを作成し、「INSERT INTO ... SELECT * FROM ...」によってデータを挿入します。つまり、連鎖することでデータをコピーします。

これができない場合は、ダンプを作成してsql-Fileを新しいデータベースに再インポートすることをお勧めします。

幸運を!

よろしく、ベン。

2