经过

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问题的产生原因与解决方法相关推荐

  1. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法

    MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 参考文章: (1)MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 (2)https://www.cnblogs.com/tiny ...

  2. go mysql 错误_mysql安装失败原因和解决方法

    mysql数据库安装不了了!mysql最后一步安装不上!mysql就是安装不上!是不是很头疼,很伤脑筋,现在大家不用着急了,小编为大家整理了mysql安装失败的原因以及mysql安装失败的解决方法,抓 ...

  3. Mysql 数据库锁表的原因和解决方法

    Mysql 数据库锁表的原因和解决方法 参考文章: (1)Mysql 数据库锁表的原因和解决方法 (2)https://www.cnblogs.com/xinruyi/p/11108795.html ...

  4. MySQL CPU 使用率高的原因和解决方法

    MySQL CPU 使用率高的原因和解决方法 参考文章: (1)MySQL CPU 使用率高的原因和解决方法 (2)https://www.cnblogs.com/wyy123/p/9258513.h ...

  5. mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法

    1.mysql都有什么锁 MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒 ...

  6. 注册表编辑器厘米爱你找不到mysql,win7系统中安装mysql后找不到服务或出现找不到指定文件的解决方法...

    最近有用户到本站反馈说碰到这样一个情况,就是在电脑中安装mysql后,出现找不到服务或出现找不到指定文件的情况,碰到这样的问题该怎么办呢,接下来给大家讲解一下 1.如果你是5.0的版本,先用cmd进入 ...

  7. mysql iops_MySQL实例IOPS使用率高的原因和解决方法

    问题描述 MySQL实例在日常使用中会出现实例IOPS使用率高的情况,本文将介绍造成该状况的主要原因和解决方法. 问题原因 实例内存满足不了缓存数据或排序等需要,导致产生大量的物理IO. 查询执行效率 ...

  8. 【MySQL】MySQL出现Waiting for table metadata lock的原因、解决方法

    Waiting for table metadata lock MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景 ...

  9. MySQL局域网内访问慢的原因及解决方法

    转载自 http://blog.csdn.net/tiantang_1986/article/details/76890178 MySQL局域网内访问慢的原因及解决方法. 出现原因:主要是因为DNS服 ...

  10. MySQL 查询速度慢与性能差的原因与解决方法

    MySQL 查询速度慢与性能差的原因与解决方法 更新时间:2019年09月26日 18:05:47 作者:Microtiger 随着网站数据量与访问量的增加,MySQL 查询速度慢与性能差的问题就日渐 ...

最新文章

  1. 国内大陆芯片70个细分领域重要代表企业!
  2. 全球机器学习领域顶尖的16家公司
  3. python就业方向选择-【经验分享】Python最好的几大就业方向与岗位技能要求!
  4. C#中的OOP相关概念
  5. WPF 获取鼠标屏幕位置、窗口位置、控件位置
  6. java 集成 kafka 0.8.2.1 适配jdk1.6
  7. 计算机应用入学考试,本科【计算机应用】入学考试模拟试题.doc
  8. android 加网络权限管理,Android添加用户组及自定义App权限的方法
  9. jwt 长度_跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)
  10. ubuntu 压缩率最高的软件_国外这款不知名的视频压缩软件,100M视频秒变2M,网友:太好用了...
  11. 杭州师范大学计算机考研难吗,杭州师范大学考研难吗?一般要什么水平才可以进入?...
  12. Openlayers地图背景透明度设置
  13. 如何避免数据湖变成数据沼泽
  14. mybatis(二)xml配置文件详细说明
  15. 字节还能如何“跳动”
  16. Java 提供给第三方使用接口方法
  17. NTT帮助印第安纳波利斯赛车场增强INDYCAR车迷体验和安全性
  18. 贯穿整个AUTOSAR架构的Interface
  19. Unity质量设置 Quality Settings
  20. 安骑士主机日志实时分析功能

热门文章

  1. Edittext限制输入字符长度,解决中英文混用情况保证规定长度
  2. java开发积分加钱换购_【案例】加油站积分兑换规则方案,加油站积分换购礼品表 - 会员管理系统 |多啦啦...
  3. 阿里云服务器和腾讯云服务器那家好?(数据对比)
  4. UIBOT的简单使用
  5. 关于c++使用TTS写的朗读软件
  6. Wacome+oneNote 写字连笔
  7. 今天,马云去马来西亚办了件大事,年轻人激动哭了!
  8. ESP8266开发之旅 应用篇⑭ 局域网应用 ——炫酷RGB彩灯(WebSocket实现)
  9. 彻底卸载Anaconda 没有Prompt情况下
  10. l2实时接口在手机APP上的使用方法介绍