2009-05-06 5 views
3

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

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

Я прочитал, что изменение глобальной переменной read_only истина будет делать то, что я хочу, и позволить хранимые процедуры для правильной работы (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_read_only), но я получаю сообщение об ошибке:

Сервер MySQL запущен с --read-единственный вариант, поэтому он не может выполнить это заявление (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.

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

ответ

0

Там, кажется, ошибка открыто об этом в 6.0 бета:

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

[3 января 2008 19:26] Филипп Stoev

Описание: Когда сервер началось с --read-only, обновления до Временные таблицы Falcon не разрешены .

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

+0

Да, я это видел, но, похоже, это ошибка сокола, и я использую InnoDB как механизм хранения по умолчанию, поэтому я не уверен, что это связано. – lau