in Профессиональное

MySQL: не работает QCache

Интересная проблема существует в 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. Спасибо Сергею Караткевичу за “наводку” на данный баг )

Write a Comment

Comment

*

  • Related Content by Tag