Project, the MySQL database was read and written and separated using Atlas.
It was configured to read data from the library.
When you connect the agent test with the database tool, everything is fine.
When using the framework MyBatis database in a project, they go directly to the main library to read and write data.
It is also normal to write a main method of using JDBC to connect yourself. A use of MyBatis frame is not normal, is not atlas to MyBatis do not support it?
So all kinds of Baidu, Google ...
Finally found the reason: If a transaction exists, Atlas enforces the main library. And this method class has to add a transaction @transactional
The solution is to add @transactional (propagation=propagation.not_supported) to the method.
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
When MySQL uses Atlas for read-write separation, it always goes through the main library problem