MySQLデータベースの名前を変更するにはどうすればいいですか(スキーマ名を変更するには)?質問する

MySQLデータベースの名前を変更するにはどうすればいいですか(スキーマ名を変更するには)?質問する

MySQL データベースの名前をすばやく変更 (スキーマ名を変更) するにはどうすればよいですか?

通常、データベースをダンプして新しい名前で再インポートします。これは非常に大きなデータベースでは選択肢になりません。どうやらRENAME {DATABASE | SCHEMA} db_name TO new_db_name; 悪いことをし、少数のバージョンしか存在せず、全体的に悪いアイデアである

これは、翻訳、これはものとは全く異なる方法で保存しますマイISAM

ベストアンサー1

InnoDBの場合、次の方法が機能するようです: 新しい空のデータベースを作成し、各テーブルの名前を新しいデータベースに順番に変更します。

RENAME TABLE old_db.table TO new_db.table;

その後、権限を調整する必要があります。

シェルでスクリプトを作成する場合は、次のいずれかを使用できます。

mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

または

for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

ノート:

  • オプション-pとパスワードの間にはスペースはありません。データベースにパスワードがない場合は、その-u username -ppassword部分を削除してください。
  • 一部のテーブルにトリガーがある場合、上記の方法では別のデータベースに移動できません (Trigger in wrong schemaエラーが発生します)。その場合は、従来の方法でデータベースを複製し、古いものを削除します。

    mysqldump old_db | mysql new_db

  • ストアド プロシージャがある場合は、後でコピーできます。

    mysqldump -R old_db | mysql new_db

おすすめ記事