Принудительное использование AWS для запроса НЕ ВЫПОЛНИТЬ при репликации

Мы используем AWS с репликацией в нашей системе.

Это автоматически переключается на базы данных репликации для запросов, которые не изменяют данные.

Однако у нас есть один запрос, который вызывает функцию MySQL, которая изменяет базу данных. Функция просто создает запись-заполнитель с уникальным идентификатором и возвращает ее с помощью оператора выбора. Что-то похожее на:

«ВЫБЕРИТЕ GenerateUniqueID ()»

Функция Def:

SELECT MAX(lngInvoiceID)
INTO @lngMaxInvoiceID
FROM invoice_table
WHERE GlobalConfigID=in_GlobalConfigID
FOR UPDATE;
SET @lngNewInvoiceID=COALESCE(@lngMaxInvoiceID+1,1);
INSERT INTO invoice_table(datCreated,GlobalConfigID,lngInvoiceID)
VALUES(CURDATE(),in_GlobalConfigID,@lngNewInvoiceID);
RETURN @lngNewInvoiceID;

Однако это приведет к ошибке MySQL: «Сервер MySQL работает с параметром —read-only, поэтому он не может выполнить этот оператор».

Функция GenerateUniqueID в MySQL имеет свой атрибут «Доступ к данным», установленный на «Изменяет данные SQL», и это, похоже, не имеет значения.

Соединение с БД определенно связано с балансировщиком нагрузки.

Есть ли способ заставить запрос работать с узла, который НЕ является репликацией?

0

Решение

Я обошел балансировщик нагрузки и подключился напрямую к мастеру. Это, кажется, останавливает подключение к репликации. Не идеальное решение, но оно решило проблему для меня.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector