Bagaimana untuk menamakan semula pangkalan data MySQL (tukar nama skema)?
P粉320361201
P粉320361201 2023-08-23 13:09:22
0
2
585
<p>Bagaimana untuk menamakan semula pangkalan data MySQL dengan cepat (tukar nama skemanya)? </p> <p>Biasanya saya hanya membuang pangkalan data dan mengimportnya semula dengan nama baharu. Untuk pangkalan data yang sangat besar ini bukan pilihan. Nampaknya <kod>MENAMAIKAN {DATABASE|SKEMA} db_name KEPADA new_db_name;</code> melakukan sesuatu yang buruk, hanya wujud dalam beberapa versi dan secara keseluruhannya adalah idea yang tidak baik. </p> <p>Ini perlu digunakan dengan InnoDB, yang menyimpan kandungan yang sangat berbeza daripada MyISAM. </p>
P粉320361201
P粉320361201

membalas semua(2)
P粉662089521

Gunakan beberapa arahan mudah ini:

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

Atau untuk mengurangkan I/O, gunakan yang berikut seperti yang dicadangkan oleh @Pablo Marin-Garcia:

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase
P粉949190972

Untuk InnoDB, perkara berikut nampaknya berfungsi: Cipta pangkalan data kosong baharu, kemudian namakan semula setiap jadual kepada pangkalan data baharu:

RENAME TABLE old_db.table TO new_db.table;

Anda perlu melaraskan kebenaran selepas itu.

Untuk menulis skrip dalam shell, anda boleh menggunakan mana-mana kaedah berikut:

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

atau

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;

Nota:

  • Pilihan-p和密码之间没有空格。如果您的数据库没有密码,请删除 -u username -ppassword bahagian.
  • Jika jadual mempunyai pencetus, ia tidak boleh dialihkan ke pangkalan data lain menggunakan kaedah di atas (akan mengakibatkan 触发器错误架构ralat). Jika ini berlaku, klon pangkalan data menggunakan kaedah tradisional dan kemudian padam pangkalan data lama:

    mysqldump old_db |

    Jika anda telah menyimpan prosedur, anda boleh menyalinnya:
  • mysqldump -R old_db |

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan