временные таблицы в хранимых процедурах на подчиненных серверах с установленным только для чтения

Мы настроили схему репликации ведущий/ведомый, и в последнее время у нас возникли проблемы, потому что некоторые пользователи писали непосредственно на ведомом, а не на ведущем, что делало всю настройку несогласованной.

Чтобы предотвратить повторение этих проблем, мы решили удалить права на вставку, удаление, обновление и т. д. у пользователей, обращающихся к ведомому устройству. Проблема в том, что для некоторых хранимых процедур (для чтения) требуются временные таблицы.

Я читал, что изменение глобальной переменной 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 ;

Создание временной таблицы и таблица удаления отлично работают с флагом только для чтения - если я прокомментирую строку INSERT, она будет работать нормально, но всякий раз, когда я хочу вставить или удалить из этой временной таблицы, я получаю сообщение об ошибке.

Я использую Mysql 5.1.29-rc. Мой механизм хранения по умолчанию — InnoDB.

Заранее спасибо, эта проблема действительно сводит меня с ума.


person lau    schedule 06.05.2009    source источник


Ответы (1)


Кажется, в бета-версии 6.0 обнаружена ошибка:

http://bugs.mysql.com/bug.php?id=33669

[3 янв. 2008 19:26] Филипп Стоев

Описание: Когда сервер запускается с параметром --read-only, обновления временных таблиц Falcon не допускаются.

Возможно, вы захотите добавить туда свои выводы.

person David Schmitt    schedule 06.05.2009
comment
да, я видел это, но, похоже, это специфическая ошибка Falcon, и я использую InnoDB в качестве механизма хранения по умолчанию, поэтому я не уверен, что это связано. - person lau; 06.05.2009