阿里读写分离数据源SELECT LAST_INSERT_ID()获取不到id

Posted 雪云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里读写分离数据源SELECT LAST_INSERT_ID()获取不到id相关的知识,希望对你有一定的参考价值。

异常现象

insert 通过 mybatis 以下语法给领域类 赋予的 id 值为0. 后续根据主键的update操作失效。且无异常抛出


<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">

      SELECT LAST_INSERT_ID()

    </selectKey>

产生原因

因为 执行插入语句 是在 写库 , 而SELECT LAST_INSERT_ID() 是在读库执行。


解决方案 ##

添加 /FORCE_MASTER/ 注解 使该sql 走 master 节点,代码如下

<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">

      /*FORCE_MASTER*/

      SELECT LAST_INSERT_ID()

    </selectKey>

添加事物

可以参考 :https://help.aliyun.com/document_detail/51073.html


以上是关于阿里读写分离数据源SELECT LAST_INSERT_ID()获取不到id的主要内容,如果未能解决你的问题,请参考以下文章

阿里云RDS读写分离数据查询延迟解决

阿里云数据库全新功能Redis读写分离,全维度技术解析

SAP Hybris电商系统与阿里云联合测试系列十读写分离

数据库为啥要读写分离

阿里面试,为什么Kafka不支持读写分离

MySQL读写分离---Mycat