sql >> Databasteknik >  >> RDS >> Mysql

Hur byter jag snabbt namn på en MySQL-databas (ändrar schemanamn)?

För InnoDB , följande verkar fungera:skapa den nya tomma databasen, döp sedan om varje tabell i sin tur till den nya databasen:

RENAME TABLE old_db.table TO new_db.table;

Du kommer att behöva justera behörigheterna efter det.

För att skripta i ett skal kan du använda något av följande:

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

ELLER

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;

Anmärkningar:

  • Det finns inget mellanslag mellan alternativet -p och lösenordet. Om din databas inte har något lösenord, ta bort -u username -ppassword del.
  • Om någon tabell har en trigger kan den inte flyttas till en annan databas med ovanstående metod (kommer att resultera i Trigger in wrong schema fel). Om så är fallet, använd ett traditionellt sätt att klona en databas och släpp sedan den gamla:

    mysqldump old_db | mysql new_db

  • Om du har lagrade procedurer kan du kopiera dem i efterhand:

    mysqldump -R old_db | mysql new_db



  1. Hur man installerar SQL * PLUS-klient i linux

  2. Hur SCHEMA_ID() fungerar i SQL Server

  3. Programgranskning – Stellar Repair för MS SQL

  4. Hur man övervakar HAProxy Metrics med ClusterControl