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 ;

一時テーブルの作成と削除テーブルは読み取り専用フラグで正常に機能します-INSERT行にコメントを付けると、正常に実行されます-しかし、その一時テーブルに挿入または削除したいときはいつでも、エラーメッセージが表示されます。

Mysql5.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 に答える