Мы настроили схему репликации master / slave, и у нас в последнее время возникли проблемы, потому что некоторые пользователи писали напрямую на slave, а не master, что делало всю настройку несовместимой.
Чтобы эти проблемы не повторились, мы решили удалить права на вставку, удаление, обновление и т. Д. У пользователей, обращающихся к ведомому устройству. Проблема в том, что некоторые хранимые процедуры (для чтения) требуют временных таблиц.
Я прочитал, что изменение глобальной переменной read_only на true сделает то, что я хочу, и позволит хранимым процедурам работать правильно (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_read_only), но я получаю сообщение об ошибке:
Сервер MySQL работает с параметром --read-only, поэтому он не может
выполнить это заявление (1290)
Хранимая процедура, которую я использовал (для целей тестирования), такова:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test_readonly` $$
CREATE DEFINER=`dbuser`@`%` PROCEDURE `test_readonly`()
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS temp
(
`BT_INDEX` int(11),
`BT_DESC` VARCHAR(10)
);
INSERT INTO temp (BT_INDEX, BT_DESC) VALUES (222,'walou'), (111,'bidouille');
DROP TABLE temp;
END $$
DELIMITER ;
Создание временной таблицы и удаление таблицы отлично работают с флагом readonly - если я комментирую строку INSERT, она работает нормально, но всякий раз, когда я хочу вставить или удалить из этой временной таблицы, я получаю сообщение об ошибке.
Я использую Mysql 5.1.29-rc. Мой механизм хранения по умолчанию - InnoDB.
Заранее спасибо, эта проблема действительно сводит меня с ума.