Connection is read-only. Queries leading to data modification are not allowed

2023-11-08

看了下mysql-connector-5.1.40版本中,如果设置failoverReadOnly=true (即默认值,参考 链接),当mysql连接failover时,会根据jdbc连接串将当前连接的readOnly值设置为true (第8行代码)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private  synchronized  void  switchCurrentConnectionTo( int  hostIndex, MySQLConnection connection)  throws  SQLException {
     invalidateCurrentConnection();
 
     boolean  readOnly;
     if  (isPrimaryHostIndex(hostIndex)) {
         readOnly =  this .explicitlyReadOnly ==  null  false  this .explicitlyReadOnly;
     else  if  ( this .failoverReadOnly) {
         readOnly =  true ;
     else  if  ( this .explicitlyReadOnly !=  null ) {
         readOnly =  this .explicitlyReadOnly;
     else  if  ( this .currentConnection !=  null ) {
         readOnly =  this .currentConnection.isReadOnly();
     else  {
         readOnly =  false ;
     }
     syncSessionState( this .currentConnection, connection, readOnly);
     this .currentConnection = connection;
     this .currentHostIndex = hostIndex;
}
  当执行update操作时,如果检测到readonly,就会跑出createSQLException (第8-9行代码)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected  int  executeUpdate( byte [][] batchedParameterStrings, InputStream[] batchedParameterStreams,  boolean [] batchedIsStream,  int [] batchedStreamLengths,
         boolean [] batchedIsNull,  boolean  isReallyBatch)  throws  SQLException {
 
     synchronized  (checkClosed().getConnectionMutex()) {
 
         MySQLConnection locallyScopedConn =  this .connection;
 
         if  (locallyScopedConn.isReadOnly()) {
             throw  SQLError.createSQLException(Messages.getString( "PreparedStatement.34" ) + Messages.getString( "PreparedStatement.35" ),
                     SQLError.SQL_STATE_ILLEGAL_ARGUMENT, getExceptionInterceptor());
         }
 
         ....
     }
}

  上述报错信息是PreparedStatement.34和PreparedStatement.35,查mysql connector的LocalizedErrorMessages.properties

1
2
PreparedStatement. 34 =Connection is read-only.
PreparedStatement. 35 =Queries leading to data modification are not allowed

  报错信息一致。

 

因此, 如果是使用的主备mysql,需要手动切换master和slave,如果使用的是多主的mysql(例如,phxsql),需要设置failoverReadOnly=false

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Connection is read-only. Queries leading to data modification are not allowed 的相关文章

  • 猫头虎博主的MySQL救援指南:轻松解决初始化问题(nysqld: Can create directort :mysgl mysg! 9-winx64 data errno such file o)

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • 【计算机开题报告】基于JSP的服装店销售管理系统

    1 选课目的意义 21世纪是一个信息化时代 随着中国经济的发展和人民生活水平的提高 服装商场的普及程度日益增大 竞争也在逐渐白炽化 为了进一步提高服装商场的经营效率 在服装店销售管理中引入计算机管理系统成为了必然的选择 由于中国环境的特殊性
  • 【计算机开题报告】智能社区管理系统

    一 设计目的及意义 随着经济的发展 人们生活水平的提高 工作和日常事务繁忙 人们对服务就有了更深入 更精细的要求 而计算机技术的迅猛发展 使得这种需求变为可能 传统的社区服务业也与互联网技术结合更加密切 这是社会发展的必然趋势 为解决社区中
  • sql临时表、创建虚拟表、select临时表、多行数据、自定义数据、插入数据

    SELECT FROM VALUES John 25 Jane 30 Mike 35 AS table name name age 方法2 select 1 2 union all select 3 4
  • 【计算机开题报告】家具销售库存管理信息系统

    一 选题的目的 意义及相关研究动态和自己的见解 随着当今社会信息化的发展 电子自动化办公越来越为各人所重视 它能有效地收集 处理各种信息 极大地提高了办事效率 而计算机技术各种软件工作平台不断的发展 又为电子自动化办公的实现提供了良好的前景
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • AntDB内存管理之内存上下文之内存上下文机制是怎么实现的

    4 内存上下文机制是怎么实现的 下文将针对内存上下文机制进行代码说明 本次以AntDB的代码为例 来解析内存上下文的实现方式 4 1 最基础的数据结构 MemoryContextData和MemoryContextMethods是内存上下文
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 图解python | 字符串及操作

    1 Python元组 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 tup1 ByteDance ShowMeAI 1997 202
  • python超详细基础文件操作【建议收藏】

    文章目录 前言 发现宝藏 1 文件操作 1 1 文件打开与关闭 1 1 1 打开文件 1 1 2 关闭文件 1 2 访问模式及说明 2 文件读写 2 1 写数据 write 2 2 读数据 read 2 3 读数据 readlines 2
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具

随机推荐

  • 中达优控触摸屏编程视频教程_中达优控触摸屏编程软件下载

    YKBuilder也就是中达优控触摸屏编程软件 是中达优控YKHMI系列人机界面的集成开发环境 它可以帮助开发适合自己工程使用的组态 从而减少开发自动化项目的时间 缩短系统升级和维护的时间 并可以与第三方应用程序无缝集成 增强生产力 在自动
  • uni-app @tap 失效

    item menu 自定义组件
  • 英语学渣如何看懂全英文的芯片数据手册

    英语学渣如何看懂全英文的芯片数据手册 一 数据手册的重要性 我们在做项目的时候常常会用到一些我们以前没接触过的芯片 这个时候我们就需要看芯片的数据手册 而我们接触到的芯片百分之九十以上都是国外的 剩下那百分之十的国产芯片也有可能是用英文写的
  • activiti自定义代理人、候选人、候选组选择

    介绍 AdminEAP框架中集成了Activiti工作流组件 使用了activiti explorer中的在线流程设计器 其中在选择代理人 审批人 中 原生的操作是输入数据 没有和系统自动关联 同时 原生的在线流程设计器使用AngularJ
  • 教你如何完美卸载Ubuntu双系统

    如何完美卸载Ubuntu双系统 一 前言 二 系统环境和DiskGenius软件下载 1 系统环境 2 DiskGenius软件下载 三 把开机启动项设为默认Windows启动 四 删除Ubuntu系统分区 1 查看电脑磁盘的情况 3种方法
  • JavaScript 中 undefined 与 undeclared 之间的区别?

    认为这个根本的区别在于 undefined是Js语言类型 而undeclared却是一种Js语法错误吧 解答第一部分 在Js中 有两个表示 空 的值undefined和null 其中比较有用的是 undefined undefined 是一
  • spring boot报FileSizeLimitExceededException异常的解决方法

    开发spring boot程序时 遇到了如下错误 The field file exceeds its maximum permitted size of 1048576 bytes 原因 Spring Boot工程嵌入的tomcat限制了
  • 探索Java8——测试Lambda表达式

    文章目录 测试Lambda表达式 测试可见Lambda行为 测试使用Lambda的方法的行为 调试 测试Lambda表达式 通常而言 好的软件工程实践一定少不了单元测试 借此保证程序的行为与预期一致 你编写测试用例 通过这些测试用例确保你代
  • FISCO BCOS(二十九)———区块链浏览器

    一 浏览器主要用途 区块链浏览器将区块链中的数据可视化 并进行实时展示 方便用户以Web页面的方式 获取当前区块链中的信息 二 一键部署 2 1 环境要求 环境 版本 Java JDK8或以上版本 MySQL MySQL 5 6或以上版本
  • UE4-VaRest客户端上传玩家得分并获取排行榜

    排行榜相关 1 上传得分 2 获取玩家排名 3 获取排行榜 1 上传得分 2 获取玩家排名 3 获取排行榜
  • 一个环境变量导致运行报错Exception in thread "main" java.lang.NoClassDefFoundError:

    昨天下午编译通过就一直报错Exception in thread main java lang NoClassDefFoundError 早上终于调通了 加油 1 安装与配置 1 在我的电脑C盘里安装了SDK 路径是这样的 C Progra
  • 如何卸载显卡驱动通过软件简单卸载法

    有时候需要卸载显卡的驱动时 可以通过下载这个软件来卸载 显卡驱动卸载工具 Display Driver Uninstaller 简称为DDU卸载工具 下载地址为 Official Display Driver Uninstaller DDU
  • Python爬虫爬取VIP网站

    一直有爱看美剧的习惯 一方面锻炼一下英语听力 一方面打发一下时间 之前是能在视频网站上面在线看的 可是自从广电总局的限制令之后 进口的美剧英剧等貌似就不在像以前一样同步更新了 但是 作为一个宅diao的我又怎甘心没剧追呢 所以网上随便查了一
  • 信息系统分析相关知识梳理

    一 企业信息化战略与实施 一 企业信息化 1 以数据处理为核心 围绕职能部门 有企业系统规划法 关键成功因素法 战略集合转化法 2 以企业内部管理信息系统为核心 围绕企业整体 有战略数据规划法 信息工程法 战略栅格法 3 以集成为核心 面向
  • AD20画板基本流程

    AD20画板流程 前言 一 AD库的选择与添加 二 画原理图 1 选择元器件 2 放置端口和放置线 3 标注 4 分离模块 5 将原理图更新到PCB中 1 元器件未封装 2 网络标签的网络属性没有放在放置线上 3 网络标签没有对应上 三 P
  • ESP系列模组PCB设计及天线摆放

    ESP8266 8285系列可以焊接到PCB板上 为了使模组获得最佳的射频性能 要合理设计模组和天线在底板上的摆放位置 一 布局 1 天线布局 二 电路设计 三 地层
  • JAVA开发运维(web场景漏洞与修复)

    漏洞一 fastjson lt 1 2 80 反序列化任意代码执行漏洞 修复建议 1 升级到最新版本1 2 83 https github com alibaba fastjson releases tag 1 2 83 该版本涉及auto
  • 做了一个directshow的filter,把RGB视频流变成黑白的 .

    转自 http blog csdn net mengaim cn article details 241449 做的这个directshow的filter属于transform filter 在其间 参考了 directshow的帮助文档
  • vt 在ubuntu交叉编译windows的执行文件

    参考文档 见官网 系统 ubuntu18 04 编译步骤 1 安装 goclang 下载 https golang org doc install 解压命令 tar C usr local xzf go1 14 2 linux amd64
  • Connection is read-only. Queries leading to data modification are not allowed

    看了下mysql connector 5 1 40版本中 如果设置failoverReadOnly true 即默认值 参考 链接 当mysql连接failover时 会根据jdbc连接串将当前连接的readOnly值设置为true 第8行