sql >> Base de Datos >  >> RDS >> Mysql

cambiar el nombre de una tabla bloqueada

Si bien, en general, Rick tiene razón al usar Percona Tools (ver 1 y 2 ), la respuesta a la pregunta realmente es usar ALTER TABLE . Pensé RENAME era solo un alias, pero parece que ese no es el caso .

La prueba parece indicar que esto funciona bien:

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;