Интересная проблема существует в mysql 5.1.*: Query Cache не работает если имя базы данных (схемы) включает в себя дефис. Например: `super-db`.
Интересно? Тогда вам под кат:
Немного подробностей можно найти тут: http://bugs.mysql.com/bug.php?id=55556
А решение в общем-то имеется весьма топорное – переименовать базу. Тут у нас есть два варианта:
– dump/restore – т.е. сделать дамп старой базы, создать новую и влить туда дамп.
Однако, если вы озаботились кешированием, то база у вас явно не на 1000 строк и такое решение займет прилично времени.
Можно “скопировать” mysql базу более простым способом: заменой схем.
Алгоритм в принципе тоже не сложен:
– CREATE DATABASE `newdb`;
// конечно же теперь без дефисов! )
– для каждой таблицы в старой БД выполнить ALTER TABLE `old-db`.`tbl_name` RENAME TO `newdb`.`tbl_name`;
(фактически подменяем схему и все).
– ну и DROP DATABASE `old-db`;
Замечание: при переименовании таблиц надо быть аккуратнее с триггерами. Я бы предложил перед переименованием делать DROP на триггер и пересоздавать его после переименования в новой схеме – иначе рискуете нарваться на ошибку.
Как-то так на этот раз… )
p.s. Спасибо Сергею Караткевичу за “наводку” на данный баг )