Nous avons mis en place un schéma de réplication maître/esclave et nous avons eu des problèmes récemment car certains utilisateurs écrivaient directement sur l'esclave au lieu du maître, rendant l'ensemble incohérent.tables temporaires dans des procédures stockées sur des serveurs esclaves avec readonly
Pour éviter que ces problèmes ne se reproduisent, nous avons décidé de supprimer les droits d'insertion, de suppression, de mise à jour, etc. des utilisateurs accédant à l'esclave. Les problèmes sont que certaines procédures stockées (pour la lecture) nécessitent des tables temporaires.
Je lis que changer la variable globale read_only true ferait ce que je veux et permettre aux procédures stockées fonctionnent correctement (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_read_only) mais je continue à obtenir l'erreur:
Le serveur MySQL est en cours d'exécution avec le --read seule l'option ne peut donc pas exécuter cette instruction (1290)
La procédure stockée que je (à des fins de test) est celui-ci:
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 ;
La table de création temporaire et la table de dépôt fonctionnent correctement avec le drapeau readonly - si je commente la ligne INSERT, elle s'exécute correctement - mais chaque fois que je veux insérer ou supprimer de cette table temporaire, le message d'erreur.
J'utilise Mysql 5.1.29-rc. Mon moteur de stockage par défaut est InnoDB.
Merci d'avance, ce problème me rend vraiment fou.
ouais, j'avais vu ça, mais ça semble être un bug spécifique à Falcon, et j'utilise InnoDB comme moteur de stockage par défaut, donc je ne suis pas sûr que cela soit lié. – lau