cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menamakan semula pangkalan data MySQL (tukar nama skema)?

<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粉320361201P粉320361201506 hari yang lalu594

membalas semua(2)saya akan balas

  • P粉662089521

    P粉6620895212023-08-24 11:11:03

    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

    balas
    0
  • P粉949190972

    P粉9491909722023-08-24 10:59:25

    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 |

      balas
      0
  • Batalbalas