2009-05-06 36 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

相关问题