[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
2022-03-18 12:56:22
質問
のMySQLマニュアルを参照してください。 MySQL がカバーしています。
通常はデータベースをダンプして、新しい名前で再インポートするだけです。非常に大きなデータベースの場合、この方法は使えません。どうやら
RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
は悪いことをする、いくつかのバージョンにしか存在しない、全体的に悪い考えである。
.
と連携する必要があります。 InnoDB とは全く異なる方法で保存されます。 マイサム .
解決方法は?
について 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
関連
-
MySQLのLike演算子に関する詳細
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] Git のローカルブランチとリモートブランチの両方の名前を変更するにはどうすればよいですか?
-
[解決済み] Git リポジトリで、ディレクトリの名前を適切に変更するには?
-
[解決済み] mysqlデータベースのサイズを取得する方法は?
-
[解決済み] MySQLでibdata1ファイルを縮小/パージする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのデータバックアップにmysqldumpを使用する方法
-
SQL集計、グループ化、ソート
-
MySQL サービスとデータベース管理
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
[解決済み】マルチパート識別子をバインドできない
-
Mysqlデータベースへのリンク時にpymysqlがConnection refusedエラーを報告する
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLのプロセスリストを見つけ、それらのプロセスを終了させる方法は?