我們已經設置了複製方案主/從,最近我們遇到了問題,因爲有些用戶直接在從服務器而不是主服務器上寫,使得整個設置不一致。只讀設置的從服務器上的存儲過程中的臨時表
爲了防止這些問題再次發生,我們決定刪除訪問從站的用戶的插入,刪除,更新等權限。問題在於某些存儲過程(用於讀取)需要臨時表。
,我讀了READ_ONLY改變全局變量設置爲true會做我想做的,並允許存儲過程正常工作(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 ;
創建臨時表和drop table可以很好地使用readonly標誌 - 如果我評論INSERT行,它運行良好 - 但是無論何時我想從該臨時表中插入或刪除,我都會收到錯誤消息。
我使用的是Mysql 5.1.29-rc。我的默認存儲引擎是InnoDB。
在此先感謝,這個問題真的讓我發瘋。
是的,我已經看到了,但它似乎是一個Falcon特定的錯誤,並且我使用InnoDB作爲默認存儲引擎,所以我不確定這是相關的。 – lau 2009-05-06 09:46:38