sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag ändra prefix i alla tabeller i min MySQL DB?

zerkms lösning fungerade inte för mig. Jag var tvungen att ange information_schema databas för att kunna fråga Tables bord.

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';

Redigera:

Optimerade frågan för att bara anropa RENAME TABLE en gång. Något jag kom in på var det faktum att den sammanlänkade utdatan blev trunkerad till 341 tecken. Detta kan lösas (om det tillåts av din server) genom att ställa in MySQL-variabeln group_concat_max_len till ett högre värde:

SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.


  1. Hur man installerar MySQL Workbench på Ubuntu

  2. Lagra data i MySQL som JSON

  3. Att SHA512-hasha ett lösenord i MySQL-databas av Python

  4. MySQL diakritisk okänslig sökning (arabiska)