mysql connection is read-only._Connection is read-only问题的产生原因与解决方法
经过
1、项目中运用了MySQL存储过程中使用动态行转列,使用了存储过程。
2、定义的service接口名为:
/**
* 根据参数查询业绩目标列表
* @param pageNo
* @param pageSize
* @param orgNo
* @param businessNo
* @param year
* @see AssetPlan
* @return
*/
PageModel selectAssetPlanList(int pageNo,int pageSize, String orgNo, String businessNo, String year);
3、在调用此方法的时候报错:Connection is read-only
错误详细信息
2017-11-14 15:39:57.971 [ ] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader 315 : Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
2017-11-14 15:39:58.930 [ ] INFO org.springframework.jdbc.support.SQLErrorCodesFactory 126 : SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
2017-11-14 15:40:20.333 [ ] ERROR com.hzcf.flagship.web.AssetPlanController 53 :
### Error querying database. Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
### The error may exist in class path resource [com/hzcf/flagship/mapping/AssetPlanMapper.xml]
### The error may involve com.hzcf.flagship.dao.AssetPlanMapper.selectAssetPlanList-Inline
### The error occurred while setting parameters
### SQL: CALL f_asset_plan_list(?,?,?,?,?)
### Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
; SQL []; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
org.springframework.dao.TransientDataAccessResourceException:
### Error querying database. Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
### The error may exist in class path resource [com/hzcf/flagship/mapping/AssetPlanMapper.xml]
### The error may involve com.hzcf.flagship.dao.AssetPlanMapper.selectAssetPlanList-Inline
### The error occurred while setting parameters
### SQL: CALL f_asset_plan_list(?,?,?,?,?)
### Cause: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
; SQL []; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
...
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
... 106 more
2017-11-14 15:45:27 JRebel: Reloading class 'com.hzcf.flagship.web.AssetPlanController'.
产生原因
一般如果报了这个错,是项目中配置了只读事务的问题。
结合我在此处使用了存储过程,存储过程中使用了INTO关键字,决定了存储过程为非只读操作。所以会报错。
项目中配置的aop事务
com.hzcf.flagship.service.*
解决办法
因为我项目中事务切入点是所有的Service方法。
只需把selectAssetPlanList()方法名称改成queryAssetPlanList()。使此方法不加入aop事务中。就ok了。
存储过程(不是创建存储过程的sql语句)
BEGIN
SET @SQL = NULL;
SELECT
GROUP_CONCAT(
DISTINCT CONCAT(
'MAX(IF(ap.month = ''',
ap.month,
''', ap.plan_value, 0)) AS ''',
ap.month,
''''
)
) INTO @SQL
FROM
f_asset_plan ap;
SET @SQL = CONCAT(
'Select ap.org_name, ap.business_name, ap.year, ',
@SQL,
' From f_asset_plan ap where 1=1 '
);
IF v_org_no is not null then
set @sql = CONCAT(@sql,' and ap.org_no = ''',v_org_no,'''');
end if;
IF v_business_no is not null then
set @sql = CONCAT(@sql,' and ap.business_no = ''',v_business_no,'''');
end if;
IF v_year is not null then
set @sql = CONCAT(@sql,' and ap.year = ''',v_year,'''');
end if;
IF v_from IS NULL THEN SET v_from = 0; END IF;
IF v_pageSize IS NULL THEN SET v_pageSize = 10; END IF;
SET @SQL = CONCAT(@SQL,' Group by ap.org_no,ap.business_no limit ',v_from,',',v_pageSize);
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
参数
IN v_from int,IN v_pageSize int,IN v_org_no varchar(225),IN v_business_no varchar(225),IN v_year varchar(225)
参考
mysql connection is read-only._Connection is read-only问题的产生原因与解决方法相关推荐
- MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 参考文章: (1)MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 (2)https://www.cnblogs.com/tiny ...
- go mysql 错误_mysql安装失败原因和解决方法
mysql数据库安装不了了!mysql最后一步安装不上!mysql就是安装不上!是不是很头疼,很伤脑筋,现在大家不用着急了,小编为大家整理了mysql安装失败的原因以及mysql安装失败的解决方法,抓 ...
- Mysql 数据库锁表的原因和解决方法
Mysql 数据库锁表的原因和解决方法 参考文章: (1)Mysql 数据库锁表的原因和解决方法 (2)https://www.cnblogs.com/xinruyi/p/11108795.html ...
- MySQL CPU 使用率高的原因和解决方法
MySQL CPU 使用率高的原因和解决方法 参考文章: (1)MySQL CPU 使用率高的原因和解决方法 (2)https://www.cnblogs.com/wyy123/p/9258513.h ...
- mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法
1.mysql都有什么锁 MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒 ...
- 注册表编辑器厘米爱你找不到mysql,win7系统中安装mysql后找不到服务或出现找不到指定文件的解决方法...
最近有用户到本站反馈说碰到这样一个情况,就是在电脑中安装mysql后,出现找不到服务或出现找不到指定文件的情况,碰到这样的问题该怎么办呢,接下来给大家讲解一下 1.如果你是5.0的版本,先用cmd进入 ...
- mysql iops_MySQL实例IOPS使用率高的原因和解决方法
问题描述 MySQL实例在日常使用中会出现实例IOPS使用率高的情况,本文将介绍造成该状况的主要原因和解决方法. 问题原因 实例内存满足不了缓存数据或排序等需要,导致产生大量的物理IO. 查询执行效率 ...
- 【MySQL】MySQL出现Waiting for table metadata lock的原因、解决方法
Waiting for table metadata lock MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景 ...
- MySQL局域网内访问慢的原因及解决方法
转载自 http://blog.csdn.net/tiantang_1986/article/details/76890178 MySQL局域网内访问慢的原因及解决方法. 出现原因:主要是因为DNS服 ...
- MySQL 查询速度慢与性能差的原因与解决方法
MySQL 查询速度慢与性能差的原因与解决方法 更新时间:2019年09月26日 18:05:47 作者:Microtiger 随着网站数据量与访问量的增加,MySQL 查询速度慢与性能差的问题就日渐 ...
最新文章
- 【Elasticsearch】第2篇:Elasticsearch分布式安装
- 详解Nginx SSL快速双向认证配置(脚本)
- EqualizeHist函数
- 微众WeCross 跨链平台(5)“UBI通用区块链接口”设计
- 对jQuery的认识
- apscheduler 任务管理
- php生成 优惠券 激活码
- Spring Boot + Jersey发生FileNotFoundException (No such file or directory)
- spring相关—IOC容器—使用注解配置bean
- 探究:数字孪生是如何赋能智慧能源信息化领域系统发展的?
- UCI机器学习库和一些相关算法
- 空间解析几何基础总结
- excel两个字符串相减_Excel小技巧|三种方法计算算式字符串
- js正则表达式 验证非负数
- 设备无法使用、驱动载入异常(39){无法取得路径} 路径 %hs 不存在
- windows10计算机放桌面,将win10计算器放在桌面上的操作方法
- BLAST Database error: No alias or index file found for protein database
- ORA-01810: format code appears twice
- 威纶通触摸屏宏指令GetData和SetData函数的使用方法示例
- c语言int作用,c语言中int的用法有哪些
热门文章
- 太赫兹频段耦合器设计相关经验总结
- 用html做成的音频播放器,使用HTML5的Audio标签打造WEB音频播放器
- 奥美:让员工的创意开花结果
- 计算机没有iphone图标,手机没有运营商标志(iphone如何更改运营商图标)
- js中Number()与new Number()
- '520'又是一年表白日,三个个方法告白你最爱的’气球‘
- 爬虫爬取京东商品详细数据 (品牌、售价、各类评论量(精确数量)、热评词及数量等)json解析部分数据
- 自动量热仪与热容量的关联,两者之间的工作原理与实际操作方式方法?
- 算法导论习题,思考题题解博主录
- 爬取前程无忧51job(动态数据)