У вас есть отложенный внутри цикла, который просто подталкивает строку. Закройте функцию в стеке и выполнит, когда функция вернется. Вы, вероятно, хотите что-то вроде этого:
for i:=0;i<500000;i++{
...
sql := "SELECT * FROM memDB1 where session_key='" + session_key+"'"
row, err := db.Query(sql)
if err != nil {
Log(LL_ERROR, "Query err:", err.Error(), ".")
continue
}
row.Close()
...
}
Поддержка документов: https://blog.golang.org/defer-panic-and-recover