решение zerkms не работает для меня. Я должен был указать базу данных information_schema
, чтобы иметь возможность запрашивать таблицу Tables
.
SELECT
CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='test';
Edit:
Оптимизирован запрос, чтобы вызывать RENAME TABLE только один раз. Что-то, с чем я столкнулся, было то, что объединенный вывод был усечен до 341 символа. Это можно решить (если это разрешено вашим сервером), установив для переменной MySQL group_concat_max_len
более высокое значение:
SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.