diff --git a/util/sqlutil/main.go b/util/sqlutil/main.go
index 4d9abed1e8fef29dfb8999087787c0dbd27937a0..6ff49a97043b914f72a7cbe8c05b6ebdfa43eb92 100644
--- a/util/sqlutil/main.go
+++ b/util/sqlutil/main.go
@@ -109,7 +109,11 @@ func (self *T) fetchResult(itemt reflect.Type, rows *sql.Rows, columns []string)
 			// Destination is a map.
 			case reflect.Map:
 				if cv.Type() != itemt.Elem() {
-					cv, _ = util.StringToType(svalue, itemt.Elem())
+					if itemt.Elem().Kind() == reflect.Interface {
+						cv, _ = util.StringToType(svalue, cv.Type())
+					} else {
+						cv, _ = util.StringToType(svalue, itemt.Elem())
+					}
 				}
 				if cv.IsValid() {
 					item.SetMapIndex(reflect.ValueOf(column), cv)