经过

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. 【Elasticsearch】第2篇:Elasticsearch分布式安装
  2. 详解Nginx SSL快速双向认证配置(脚本)
  3. EqualizeHist函数
  4. 微众WeCross 跨链平台(5)“UBI通用区块链接口”设计
  5. 对jQuery的认识
  6. apscheduler 任务管理
  7. php生成 优惠券 激活码
  8. Spring Boot + Jersey发生FileNotFoundException (No such file or directory)
  9. spring相关—IOC容器—使用注解配置bean
  10. 探究:数字孪生是如何赋能智慧能源信息化领域系统发展的?
  11. UCI机器学习库和一些相关算法
  12. 空间解析几何基础总结
  13. excel两个字符串相减_Excel小技巧|三种方法计算算式字符串
  14. js正则表达式 验证非负数
  15. 设备无法使用、驱动载入异常(39){无法取得路径} 路径 %hs 不存在
  16. windows10计算机放桌面,将win10计算器放在桌面上的操作方法
  17. BLAST Database error: No alias or index file found for protein database
  18. ORA-01810: format code appears twice
  19. 威纶通触摸屏宏指令GetData和SetData函数的使用方法示例
  20. c语言int作用,c语言中int的用法有哪些

热门文章

  1. 太赫兹频段耦合器设计相关经验总结
  2. 用html做成的音频播放器,使用HTML5的Audio标签打造WEB音频播放器
  3. 奥美:让员工的创意开花结果
  4. 计算机没有iphone图标,手机没有运营商标志(iphone如何更改运营商图标)
  5. js中Number()与new Number()
  6. '520'又是一年表白日,三个个方法告白你最爱的’气球‘
  7. 爬虫爬取京东商品详细数据 (品牌、售价、各类评论量(精确数量)、热评词及数量等)json解析部分数据
  8. 自动量热仪与热容量的关联,两者之间的工作原理与实际操作方式方法?
  9. 算法导论习题,思考题题解博主录
  10. 爬取前程无忧51job(动态数据)