どうになった名前の変更MySQLデータベースの変更スキーマ名)?
質問
MySQLのマニュアル MySQL カバーです。
通常んダンプのデータベースやら逆輸入するくらいのつもりでとすることができます。このオプションのための非常に大きなデータベースです。どうやら RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
なに悪いものにだけ存在する一部のバージョンであるのは悪いこと全般.
解決
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
他のヒント
使用これらのいくつかの簡単なコマンド:
mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql
へのI/Oは以下のとおり、@-パブロ-マリン-ガルシア:
mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase
と思い、ソリューションが簡単になりやが示唆された一部の開発者向けです。phpMyAdminは動作します。
からphpMyAdminを選択し、データベースを選択します。のタブが一つという業務は、名前を変更。ることはありません。
では、多くの示唆を新規作成しデータベースの新しい名前をダンプするすべてのテーブルのデータベースに新しいデータベースの旧データベースです。
利用できるSQLを生成するSQLスクリプト転送、各テーブルをソースデータベースを転送先のデータベースです。
を作成する必要があ接続先のデータベースの前にスクリプトから生成されたコマンドです。
どちらかをお使いいただけますこの二つのスクリプト(Iの発案の元、誰かが"改善"私の回答の利用 GROUP_CONCAT
.好きなところをお選びくださも好きですから、オリジナル):
SELECT CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name, '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
または
SELECT GROUP_CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name SEPARATOR '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
($1$2のソースおよびターゲットにそれぞれ
これをSQLコマンドがいします。
ご注意 GROUP_CONCAT
デフォルトの長さを制限する場合がを超えたデータベース数の多い。きを変化させることにより走行 SET SESSION group_concat_max_len = 100000000;
(その他の大きます。
を模倣した欠 RENAME DATABASE
コマンドはMySQL:
- 新規データベースを作成
の名前を変更クエリを処理するクラウドの場合:
SELECT CONCAT('RENAME TABLE ',table_schema,'.',table_name, ' TO ','new_schema.',table_name,';') FROM information_schema.TABLES WHERE table_schema LIKE 'old_schema';
施設まで格安料金プランを出力
- 削除旧データベース
三つのオプション:
同時に、新たにデータベースのサーバーを移動して、ファイルからデータベースにフォルダのその他を再起動します。なお、この場合だけすべてのテーブルはMyISAMです。
同時に、新たにデータベース、テーブルの作成...のような諸表を使用しの挿入...SELECT*fromます。
Mysqldumpを使用ブラウザで表示してみるとファイルです。
に簡単に
変更データベースへのディレクトリ:
cd /var/lib/mysql/
停止MySQL...ことは重要です。
/etc/init.d/mysql stop
大丈夫、このように動作しないためにInnoDBはBDB-データベースです。
名前を変更データベース:
mv old-name new-name
...または、テーブル---
cd database/
mv old-name.frm new-name.frm
mv old-name.MYD new-name.MYD
mv old-name.MYI new-name.MYI
MySQLを再起動
/etc/init.d/mysql start
行...
OK、このようになりませんInnoDBはBDBデータベースです。この場合においてダンプのデータベースを再インポートします。
私は最近になってようやく全件について教えてください、MyISAMとInnoDBが非常に高速:
RENAME TABLE old_db.table TO new_db.table;
記憶してない場いただいていましたが信用がかったのですが、自分以外の誰かいいえ。
にお使いいただけシェルスクリプト:
#!/bin/bash
set -e # terminate execution on command failure
mysqlconn="mysql -u root -proot"
olddb=$1
newdb=$2
$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"
で働きたい
$ sh rename_database.sh oldname newname
私はこれを使用
$ mysqldump -u root -p olddb >~/olddb.sql
$ mysql -u root -p
mysql> create database newdb;
mysql> use newdb
mysql> source ~/olddb.sql
mysql> drop database olddb;
単純な弾は、ゴール前の混戦うという 完全 名前の変更 を含む落下旧データベースの終点なので名前の変更ではなくコピー):
mysqladmin -uroot -pmypassword create newdbname
mysqldump -uroot -pmypassword --routines olddbname | mysql -uroot -pmypassword newdbname
mysqladmin -uroot -pmypassword drop olddbname
手順:
- コピーのラインのメモ帳です。
- をお願いするものでありますが"olddbname","newdbname","mypassword"(+任意に"root")と同じことです。
- 実行に一つ一つのコマンドライン(入"y"が表示されたら).
MySQLをサポートしていない名前の変更のデータベースを通じてそのコマンドインタフェースの瞬間にも名前に変更することができ、データベースにアクセスできる場合は、ディレクトリにMySQLの店舗そのデータベースです。デフォルトのMySQL設備は通常のデータディレクトリ下のディレクトリにMySQLを設置しました。検索データベースの名前変更したいのデータディレクトリに変更できます。名を変更したいディレクトリがあるアクセス権の問題になってる。注意します。
注意: 必要があるMySQLの以前の名前に変更することができ、データベース
おすすめす新しいデータベースの名前をつけたい)ならびに輸出入に必要なデータから古いのです。インターネットはモバイル.
きの名前を変更データベースPHPMyAdminでのダンプを作成し、その下に再現されるデータベースにすることができます。
方のためのMacユーザーの続編Proは、データベースの名前を変更オプションのデータベースメニューです。http://www.sequelpro.com/
どの方法として2通りの方法があり:
方法1: 周知の方法を変更データベースのスキーマであるダンピングのスキーマを使用mysqldumpを回復でスキーマ、およびその下のスキーマの場合)を行います。
シェル
mysqldump emp > emp.out
mysql -e "CREATE DATABASE employees;"
mysql employees < emp.out
mysql -e "DROP DATABASE emp;"
は上記の方法は簡単、時間と空間がかかります。う場合にはスキーマは以 100GB? 方法はあきパイプは、上記のコマンドと省スペースでしか保存されない。
改善状況につなが速い方法の名前を変更システムの主要なテーマは、しかし、注意が必要なのです。
方法2: MySQLは非常に良い機能名を変更したいテーブルも作品を越えて含まれています。この名前変更操作は、原子からアクセスできるテーブルのそれと改称。この程度の短時間で変化するテーブルの名称又はそのスキーマはメタデータが変化します。こちらは手続き的アプローチでこの名前の変更:
同時に、新たにデータベースのスキーマの望ます。名前の変更、テーブルからスキーマへの新たなスキーマは、MySQLのテーブル名の変更"コマンドを実行します。落旧データベースのスキーマ.If there are views, triggers, functions, stored procedures in the schema, those will need to be recreated too
.MySQLのテーブル名の変更"に失敗した場合にトリガーが存在するのです。これまでには、以下のもの
1) Dump the triggers, events and stored routines in a separate file.
この行使-E-Rパのほか、-t-dる堆積場のトリガー)、mysqldumpをコマンドです。一度トリガーが出力されますし、必要なものを落としてからのスキーマ、テーブルの名前を変更コマンドです。
$ mysqldump <old_schema_name> -d -t -R -E > stored_routines_triggers_events.out
2) の発生リストの"BASE"を参照。こうすることができ、問い合せ information_schema.TABLES
表に示す。
mysql> select TABLE_NAME from information_schema.tables where
table_schema='<old_schema_name>' and TABLE_TYPE='BASE TABLE';
3) ダンプのビューを行い、また、そのファイルです。眺望することができ、クエリと同じ information_schema.TABLES
表に示す。
mysql> select TABLE_NAME from information_schema.tables where
table_schema='<old_schema_name>' and TABLE_TYPE='VIEW';
$ mysqldump <database> <view1> <view2> … > views.out
4) ドトリガーの現在のテーブルのold_schema.
mysql> DROP TRIGGER <trigger_name>;
...
5) 回復のダンプファイルを一度にすべてのテーブルからステップ#2。
mysql> RENAME TABLE <old_schema>.table_name TO <new_schema>.table_name;
...
$ mysql <new_schema> < views.out
$ mysql <new_schema> < stored_routines_triggers_events.out
練上記の方法:して更新する必要があるの補助金を用い、正しいschema_name.これらが固定され、簡単な更新イナリを使用しています。columns_priv、mysql.procs_priv、mysql.tables_priv、mysql.dbテーブルの更新old_schema名new_schema話"フラッシュ特典;".は方法"2"のように見えるビットの複雑化の方法"1"以外のこで選択した).簡単なバスクリプトを実施のセキュリティ"メニュー画面に適切に配列できる省スペースながら時間名を変更したいデータベースシステムの主要なテーマです。
のPerconaリモートDBAチームを書いているスクリプトというrename_db"とすること次のようになっています:
[root@dba~]# /tmp/rename_db
rename_db <server> <database> <new_database>
を発揮するこのスクリプト使用例をスキーマ"電磁ポンプ"の作成、試験をトリガ,ストアドプロシージャとファンがschema.う名前の変更、データベース用のスクリプトの一部の使に対して時間がかかるダンプ/復元方法。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| emp |
| mysql |
| performance_schema |
| test |
+--------------------+
[root@dba ~]# time /tmp/rename_db localhost emp emp_test
create database emp_test DEFAULT CHARACTER SET latin1
drop trigger salary_trigger
rename table emp.__emp_new to emp_test.__emp_new
rename table emp._emp_new to emp_test._emp_new
rename table emp.departments to emp_test.departments
rename table emp.dept to emp_test.dept
rename table emp.dept_emp to emp_test.dept_emp
rename table emp.dept_manager to emp_test.dept_manager
rename table emp.emp to emp_test.emp
rename table emp.employees to emp_test.employees
rename table emp.salaries_temp to emp_test.salaries_temp
rename table emp.titles to emp_test.titles
loading views
loading triggers, routines and events
Dropping database emp
real 0m0.643s
user 0m0.053s
sys 0m0.131s
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| emp_test |
| mysql |
| performance_schema |
| test |
+--------------------+
ご覧のとおり、上記の出力のデータベースのスキーマ"電磁ポンプ"へと名称変更を行う"emp_test"を秒以下最後に、このスクリプトからPerconaに使用される、上記方法は2です。
#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
set -e
if [ -z "$3" ]; then
echo "rename_db <server> <database> <new_database>"
exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
echo "ERROR: New database already exists $3"
exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "show create database $2\G" -sss | grep ^Create | awk -F'CHARACTER SET ' '{print $2}' | awk '{print $1}'`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
echo "Error retrieving tables from $2"
exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
echo "drop trigger $TRIGGER"
mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
echo "rename table $2.$TABLE to $3.$TABLE"
mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
echo "loading views"
mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
echo "Dropping database $2"
mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
COLUMNS_PRIV=" UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
PROCS_PRIV=" UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
TABLES_PRIV=" UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
DB_PRIV=" UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
echo " flush privileges;"
fi
できる名前を変更するすべてのテーブル内のデータベースを別のデータベースなしであることを示すインターフェース内容:輸出入-貿易-復帰いたします。
DROP PROCEDURE IF EXISTS mysql.rename_db; DELIMITER || CREATE PROCEDURE mysql.rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100)) BEGIN SELECT CONCAT('CREATE DATABASE ', new_db, ';') `# create new database`; SELECT CONCAT('RENAME TABLE `', old_db, '`.`', table_name, '` TO `', new_db, '`.`', table_name, '`;') `# alter table` FROM information_schema.tables WHERE table_schema = old_db; SELECT CONCAT('DROP DATABASE `', old_db, '`;') `# drop old database`; END|| DELIMITER ; $ time mysql -uroot -e "call mysql.rename_db('db1', 'db2');" | mysql -uroot
しかし他のトリガーのdbになります。る必要があります落として初めて目に再現した後の名前を変更します。
mysql -uroot -e "call mysql.rename_db('test', 'blah2');" | mysql -uroot ERROR 1435 (HY000) at line 4: Trigger in wrong schema
多くの答えがここで間違いのは、次の二つの理由
- だけでなくテーブルリネームの使用が可意をトリガーとする。がある場合にトリガー、テーブル名の変更に失敗した
- 利用できませんmysqldumpをしたい場合は"迅速"として要求された場合には、当該う名前の変更、ビッグデータベース
Perconaはブログをどうなもの:https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/
スクリプトに掲載(作?) によるサイモン-R-ジョーンズなどが示唆される。私はバグ修正があったのです。ことができま
https://gist.github.com/ryantm/76944318b0473ff25993ef2a7186213d
ここにコピーする
#!/bin/bash
# Copyright 2013 Percona LLC and/or its affiliates
# @see https://www.percona.com/blog/2013/12/24/renaming-database-schema-mysql/
set -e
if [ -z "$3" ]; then
echo "rename_db <server> <database> <new_database>"
exit 1
fi
db_exists=`mysql -h $1 -e "show databases like '$3'" -sss`
if [ -n "$db_exists" ]; then
echo "ERROR: New database already exists $3"
exit 1
fi
TIMESTAMP=`date +%s`
character_set=`mysql -h $1 -e "SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = '$2'" -sss`
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
STATUS=$?
if [ "$STATUS" != 0 ] || [ -z "$TABLES" ]; then
echo "Error retrieving tables from $2"
exit 1
fi
echo "create database $3 DEFAULT CHARACTER SET $character_set"
mysql -h $1 -e "create database $3 DEFAULT CHARACTER SET $character_set"
TRIGGERS=`mysql -h $1 $2 -e "show triggers\G" | grep Trigger: | awk '{print $2}'`
VIEWS=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='VIEW'" -sss`
if [ -n "$VIEWS" ]; then
mysqldump -h $1 $2 $VIEWS > /tmp/${2}_views${TIMESTAMP}.dump
fi
mysqldump -h $1 $2 -d -t -R -E > /tmp/${2}_triggers${TIMESTAMP}.dump
for TRIGGER in $TRIGGERS; do
echo "drop trigger $TRIGGER"
mysql -h $1 $2 -e "drop trigger $TRIGGER"
done
for TABLE in $TABLES; do
echo "rename table $2.$TABLE to $3.$TABLE"
mysql -h $1 $2 -e "SET FOREIGN_KEY_CHECKS=0; rename table $2.$TABLE to $3.$TABLE"
done
if [ -n "$VIEWS" ]; then
echo "loading views"
mysql -h $1 $3 < /tmp/${2}_views${TIMESTAMP}.dump
fi
echo "loading triggers, routines and events"
mysql -h $1 $3 < /tmp/${2}_triggers${TIMESTAMP}.dump
TABLES=`mysql -h $1 -e "select TABLE_NAME from information_schema.tables where table_schema='$2' and TABLE_TYPE='BASE TABLE'" -sss`
if [ -z "$TABLES" ]; then
echo "Dropping database $2"
mysql -h $1 $2 -e "drop database $2"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.columns_priv where db='$2'" -sss` -gt 0 ]; then
COLUMNS_PRIV=" UPDATE mysql.columns_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.procs_priv where db='$2'" -sss` -gt 0 ]; then
PROCS_PRIV=" UPDATE mysql.procs_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.tables_priv where db='$2'" -sss` -gt 0 ]; then
TABLES_PRIV=" UPDATE mysql.tables_priv set db='$3' WHERE db='$2';"
fi
if [ `mysql -h $1 -e "select count(*) from mysql.db where db='$2'" -sss` -gt 0 ]; then
DB_PRIV=" UPDATE mysql.db set db='$3' WHERE db='$2';"
fi
if [ -n "$COLUMNS_PRIV" ] || [ -n "$PROCS_PRIV" ] || [ -n "$TABLES_PRIV" ] || [ -n "$DB_PRIV" ]; then
echo "IF YOU WANT TO RENAME the GRANTS YOU NEED TO RUN ALL OUTPUT BELOW:"
if [ -n "$COLUMNS_PRIV" ]; then echo "$COLUMNS_PRIV"; fi
if [ -n "$PROCS_PRIV" ]; then echo "$PROCS_PRIV"; fi
if [ -n "$TABLES_PRIV" ]; then echo "$TABLES_PRIV"; fi
if [ -n "$DB_PRIV" ]; then echo "$DB_PRIV"; fi
echo " flush privileges;"
fi
保存してくださいというファイルと rename_db
のスクリプトの実行と chmod +x rename_db
そのような気分で使ってくだ ./rename_db localhost old_db new_db
こちらはバッチファイルに書いた自動化し、コマンドラインから、Windows/MS-DOS.
書式はrename_mysqldbデータベースnewdatabase-u[ユーザ]-p[パスワード]
:: ***************************************************************************
:: FILE: RENAME_MYSQLDB.BAT
:: ***************************************************************************
:: DESCRIPTION
:: This is a Windows /MS-DOS batch file that automates renaming a MySQL database
:: by using MySQLDump, MySQLAdmin, and MySQL to perform the required tasks.
:: The MySQL\bin folder needs to be in your environment path or the working directory.
::
:: WARNING: The script will delete the original database, but only if it successfully
:: created the new copy. However, read the disclaimer below before using.
::
:: DISCLAIMER
:: This script is provided without any express or implied warranties whatsoever.
:: The user must assume the risk of using the script.
::
:: You are free to use, modify, and distribute this script without exception.
:: ***************************************************************************
:INITIALIZE
@ECHO OFF
IF [%2]==[] GOTO HELP
IF [%3]==[] (SET RDB_ARGS=--user=root) ELSE (SET RDB_ARGS=%3 %4 %5 %6 %7 %8 %9)
SET RDB_OLDDB=%1
SET RDB_NEWDB=%2
SET RDB_DUMPFILE=%RDB_OLDDB%_dump.sql
GOTO START
:START
SET RDB_STEP=1
ECHO Dumping "%RDB_OLDDB%"...
mysqldump %RDB_ARGS% %RDB_OLDDB% > %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=2
ECHO Creating database "%RDB_NEWDB%"...
mysqladmin %RDB_ARGS% create %RDB_NEWDB%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=3
ECHO Loading dump into "%RDB_NEWDB%"...
mysql %RDB_ARGS% %RDB_NEWDB% < %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=4
ECHO Dropping database "%RDB_OLDDB%"...
mysqladmin %RDB_ARGS% drop %RDB_OLDDB% --force
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=5
ECHO Deleting dump...
DEL %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
ECHO Renamed database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:ERROR_ABORT
IF %RDB_STEP% GEQ 3 mysqladmin %RDB_ARGS% drop %NEWDB% --force
IF %RDB_STEP% GEQ 1 IF EXIST %RDB_DUMPFILE% DEL %RDB_DUMPFILE%
ECHO Unable to rename database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:HELP
ECHO Renames a MySQL database.
ECHO Usage: %0 database new_database [OPTIONS]
ECHO Options: Any valid options shared by MySQL, MySQLAdmin and MySQLDump.
ECHO --user=root is used if no options are specified.
GOTO END
:END
SET RDB_OLDDB=
SET RDB_NEWDB=
SET RDB_ARGS=
SET RDB_DUMP=
SET RDB_STEP=
TodoInTXの保存手順んからの作業だった。ここでの私の刺しです:
-- stored procedure rename_db: Rename a database my means of table copying. -- Caveats: -- Will clobber any existing database with the same name as the 'new' database name. -- ONLY copies tables; stored procedures and other database objects are not copied. -- Tomer Altman (taltman@ai.sri.com) delimiter // DROP PROCEDURE IF EXISTS rename_db; CREATE PROCEDURE rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100)) BEGIN DECLARE current_table VARCHAR(100); DECLARE done INT DEFAULT 0; DECLARE old_tables CURSOR FOR select table_name from information_schema.tables where table_schema = old_db; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; SET @output = CONCAT('DROP SCHEMA IF EXISTS ', new_db, ';'); PREPARE stmt FROM @output; EXECUTE stmt; SET @output = CONCAT('CREATE SCHEMA IF NOT EXISTS ', new_db, ';'); PREPARE stmt FROM @output; EXECUTE stmt; OPEN old_tables; REPEAT FETCH old_tables INTO current_table; IF NOT done THEN SET @output = CONCAT('alter table ', old_db, '.', current_table, ' rename ', new_db, '.', current_table, ';'); PREPARE stmt FROM @output; EXECUTE stmt; END IF; UNTIL done END REPEAT; CLOSE old_tables; END// delimiter ;
手順:
- ヒット http://localhost/phpmyadmin/
- 選択DB
- をクリック操作タブ
- がありますのタブとして"名前を変更データベースにお楽しみいただけます。※新しい名前とチェックを調整す特典をご利用いただけます。
- クリックします。
I たちに、次の問いかけをもたらサーバー上の断層 ることができるよう周りのダウンタイムを復元するうえで非常に大規模データベースによりMySQLを使用して行います。かにはなかったが成功を実現しまのたかったのは名前を変更したデータベース機能でダンプ/輸入ではなかったオプションによりサイズのデータベースです。
あるテーブル名の変更機能が組み込まれてMySQLようになってい書簡単なPythonスクリプトの仕事でした。私 に掲載しGitHub 場合での使用。
便利にご利用いただけるよう、以下の小さなshellscriptが実行される二つのパラメータ:db名前と新しいdb-名です。
必要がある場合があります追加のログイン-パラメータはmysqlのラインを組み合わせて使用しない場合は、.my.cnfファイルをご家庭をクリックします。くださいバックアップを実行する前に、このスクリプト
#!/usr/bin/env bash
mysql -e "CREATE DATABASE $2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
for i in $(mysql -Ns $1 -e "show tables");do
echo "$1.$i -> $2.$i"
mysql -e "rename TABLE $1.$i to $2.$i"
done
mysql -e "DROP DATABASE $1"
最も簡単な方法は使用HeidiSQLソフトウェアです。無料で、オープンソースです。全てのWindowsやLinux ワイン (WindowsアプリケーションにLinux、BSD,Solaris,Mac OS X).
ダウンロードHeidiSQL、後藤 http://www.heidisql.com/download.php.
ダウンロードワイン、後藤 http://www.winehq.org/.
名前を変更データベースHeidiSQL、右クリックし、データベース名を選んで"編集"を選択することにより.を入力して新しい名前のプレス'OK'.
でエネルギーのことです。
こちらが早い方法で生成したsqlスクリプトの場合、多くのテーブルを移動します。
SELECT DISTINCT CONCAT('RENAME TABLE ', t.table_schema,'.', t.table_name, ' TO ',
t.table_schema, "_archive", '.', t.table_name, ';' ) as Rename_SQL
FROM information_schema.tables t
WHERE table_schema='your_db_name' ;
う好は述べたように、このメソッドはここでは別の方法:
create database NewDatabaseName like OldDatabaseName;
そして各テーブル:
create NewDatabaseName.tablename like OldDatabaseName.tablename;
insert into NewDataBaseName.tablename select * from OldDatabaseName.tablename;
したい場合には、
drop database OldDatabaseName;
このアプローチを活用して全体を転送サーバーとゼロ付近、ネットワークのトラフィックまれるもののスピードダンプ/復帰いたします。
が発見された場合には保存の手続き/views/etcするために移転しました。
Macユーザーに利用できる Sequel Pro
あり(無料)へのこだわりのオプションの名前の変更はデータベースです。かなり削除のDBです。
一度に関連するDBボタンをクリックするだけ: Database
--> Rename database...
MySQL管理者は、以下の
- 下のカタログ、新しいデータベースのスキーマ.
- へのバックアップをバックアップ 旧schema.
- 実行バックアップ。
- への復元とそのファイルを開く 作成されたステップ3.
- を選択"もうひとつのスキーマ"を目標 スキーマを選んで、新しいデータベース schema.
- 開始復帰いたします。
- 検証の新たなスキーマが見えます 良を削除します。
に phpmyadmin 簡単に名前を変更、データベース
select database
goto operations tab
in that rename Database to :
type your new database name and click go
お願い落と古いテーブルとリロードテーブルデータの[OK]をクリックしても
データベースに改称
ご利用の場合 phpMyAdmin この"操作"タブを選択したデータベースにしたい名前を変更します。そして最後の部"のコピーデータベース"(もしくは類似したもの)は、名前を選択のオプションです。この場合、この思いを選択してください"構造データの作成データベースからコピー"チェックボックスにチェックが入り、最後に、"go"ボタンを押しているのです。
ちなみに、私が使っているphpMyAdminスペイン語でお使いいただくことによって、名前の部分は英語によります。
こちらは一線Bashのスニペットを移動するすべてのテーブルからスキーマ別:
history -d $((HISTCMD-1)) && mysql -udb_user -p'db_password' -Dold_schema -ABNnqre'SHOW TABLES;' | sed -e's/.*/RENAME TABLE old_schema.`&` TO new_schema.`&`;/' | mysql -udb_user -p'db_password' -Dnew_schema
の履歴のコマンドになることで、MySQLコマンドを含むパスワードなに保存されたシェルの歴史。
う db_user
はread/write/drop権限のスキーマ、およびread/write/create権限は、新しいスキーマ.