我们已经设置了复制方案主/从,最近我们遇到了问题,因为有些用户直接在从服务器而不是主服务器上写,使得整个设置不一致。只读设置的从服务器上的存储过程中的临时表
为了防止这些问题再次发生,我们决定删除访问从站的用户的插入,删除,更新等权限。问题在于某些存储过程(用于读取)需要临时表。
,我读了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