Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zmiana nazwy zablokowanej tabeli

Chociaż ogólnie Rick ma rację, używając narzędzi Percona (patrz 1 i 2 ), odpowiedzią na pytanie jest użycie ALTER TABLE . Myślałem, że RENAME był tylko aliasem - ale wygląda na to, że tak nie jest .

Test wydaje się wskazywać, że to działa OK:

CREATE TABLE foo_new (...)

-- copy data to new table, might take very long
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id <= 3;

LOCK TABLES foo WRITE, foo_new WRITE;

-- quickly copy the tiny rest over
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id > 3;

-- now switch to the new table
ALTER TABLE foo RENAME TO foo_old;
ALTER TABLE foo_new RENAME TO foo;

UNLOCK TABLES;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL concat() do tworzenia nazw kolumn do użycia w zapytaniu?

  2. Jak zidentyfikować język w kolumnie utf-8 w MySQL?

  3. Hierarchia przechowywania mysql z dużymi drzewami

  4. Zaktualizuj tabelę MySQL o rankingi rekordów w grupach

  5. Jaka jest różnica między INNER JOIN, LEFT JOIN, RIGHT JOIN i FULL JOIN?