diff --git a/models/user.go b/models/user.go
index 1e514cdf5..37e7640ee 100644
--- a/models/user.go
+++ b/models/user.go
@@ -314,19 +314,23 @@ func CreateUser(u *User) (err error) {
 		return err
 	}
 
-	// Auto-set admin for user whose ID is 1.
-	if u.Id == 1 {
+	// Auto-set admin for the first user.
+	if countUsers(sess) == 1 {
 		u.IsAdmin = true
 		u.IsActive = true
-		_, err = x.Id(u.Id).UseBool().Update(u)
+		_, err = x.Id(u.Id).AllCols().Update(u)
 	}
 	return err
 }
 
+func countUsers(e Engine) int64 {
+	count, _ := e.Where("type=0").Count(new(User))
+	return count
+}
+
 // CountUsers returns number of users.
 func CountUsers() int64 {
-	count, _ := x.Where("type=0").Count(new(User))
-	return count
+	return countUsers(x)
 }
 
 // GetUsers returns given number of user objects with offset.