php - 强制 AWS 允许查询在复制时不执行

标签 php mysql amazon-web-services replication amazon-rds

我们在系统上使用 AWS 进行复制。

对于不修改数据的查询,这会自动切换到复制数据库。

但是,我们有一个查询调用 MySQL 函数,该函数会修改数据库。该函数仅创建一个具有唯一 ID 的占位符记录,并通过 select 语句返回该记录。类似于:

“选择生成唯一ID()”

函数定义:

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 选项运行,因此无法执行此语句”。

MySQL 中的 GenerateUniqueID 函数将其“数据访问”属性设置为“修改 SQL 数据”,这似乎没有什么区别。

数据库连接明确连接到负载均衡器。

是否有某种方法可以强制查询在非复制的节点上运行?

最佳答案

我绕过负载均衡器并直接连接到主服务器。这似乎阻止了连接转移到复制。这不是一个理想的解决方案,但它确实解决了我的问题。

关于php - 强制 AWS 允许查询在复制时不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037081/

相关文章:

php - PayPal 不再重定向到返回 URL

php - 为什么 MySQL INSERT 语句无法正常运行

mysql - 添加 order by 后查询执行时间增加

amazon-web-services - 找不到 AWS ElasticCache 配置端点 IP 地址

amazon-web-services - 如何仅显示特定国家/地区的最低价格?

php - 使用 Visual Studio Code 配置调试 PHP 的问题

php - 在 WHERE 子句 mysql 中使用条件语句

java - 需要 Spring Boot CLIENT_PLUGIN_AUTH

mysql - 如何限制MySQL的执行时间?

amazon-web-services - 从远程 Solaris 服务器到 AWS S3 存储桶的 FTP 文件