3

我们已经建立了一个复制方案主/从,最近我们遇到了问题,因为一些用户直接在从而不是主上写,使得整个设置不一致。

为了防止这些问题再次发生,我们决定从访问从站的用户中删除插入、删除、更新等权限。问题是某些存储过程(用于读取)需要临时表。

我读到将全局变量 read_only 更改为 true 会做我想做的事情并允许存储过程正常工作(http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html# sysvar_read_only),但我不断收到错误:

MySQL 服务器使用 --read-only 选项运行,因此无法执行此语句 (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。

在此先感谢,这个问题真的让我发疯了。

4

1 回答 1

0

对于 6.0 测试版,似乎有一个关于此的错误:

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

[2008 年 1 月 3 日 19:26] 菲利普·斯托耶夫

说明:使用--read-only 启动服务器时,不允许更新Falcon 临时表。

您可能想在此处添加您的发现。

于 2009-05-06T07:25:59.030 回答