mixer
mixer copied to clipboard
getShardConns 有个小BUG
trafficstars
getShardConns函数会被handleExec和handleSelect等调用;这里handleExec可能会执行Insert或者update,在getShareConns中进行获取数据库连接处理时调用了getConn方法来获取数据库连接,
var co *client.SqlConn
for _, n := range nodes {
co, err = c.getConn(n, true)
if err != nil {
break
}
conns = append(conns, co)
}
而getConn是根据isSelect参数来判断是在主上执行操作还是在从上执行操作,现在问题出来了
co, err = c.getConn(n, true)
这里的isSelect参数始终是true。 结果就是如果你的从库设置了只读,那么就无法进行写操作;他将返回: ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement
Thank you very much. I will try to check and fix it later.