2009-05-06 24 views
3

我們已經設置了複製方案主/從,最近我們遇到了問題,因爲有些用戶直接在從服務器而不是主服務器上寫,使得整個設置不一致。只讀設置的從服務器上的存儲過程中的臨時表

爲了防止這些問題再次發生,我們決定刪除訪問從站的用戶的插入,刪除,更新等權限。問題在於某些存儲過程(用於讀取)需要臨時表。

,我讀了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。

在此先感謝,這個問題真的讓我發瘋。

回答

0

似乎是一個錯誤打開這個爲6.0測試版:

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

[2008年1月3日19:26]菲利普Stoev

說明:當服務器 開始於 - 只讀,更新至 Falcon臨時表不允許爲 。

您可能想要在那裏添加您的發現。

+0

是的,我已經看到了,但它似乎是一個Falcon特定的錯誤,並且我使用InnoDB作爲默認存儲引擎,所以我不確定這是相關的。 – lau 2009-05-06 09:46:38

相關問題