mixer icon indicating copy to clipboard operation
mixer copied to clipboard

getShardConns 有个小BUG

Open dancebear opened this issue 11 years ago • 1 comments
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

dancebear avatar Sep 15 '14 07:09 dancebear

Thank you very much. I will try to check and fix it later.

siddontang avatar Sep 15 '14 08:09 siddontang