diff --git a/src/box/schema.cc b/src/box/schema.cc
index 9767207e099be2fbf884b370d11fec68775a7f9d..fab7544f248dd61d95523308a267ccbd1368cf9a 100644
--- a/src/box/schema.cc
+++ b/src/box/schema.cc
@@ -311,9 +311,8 @@ schema_find_id(uint32_t system_space_id, uint32_t index_id,
 	       const char *name, uint32_t len, uint32_t *object_id)
 {
 	if (len > BOX_NAME_MAX) {
-		diag_set(SystemError,
-			 "name length %d is greater than BOX_NAME_MAX", len);
-		return -1;
+		*object_id = BOX_ID_NIL;
+		return 0;
 	}
 	struct space *space = space_cache_find(system_space_id);
 	if (space == NULL)
diff --git a/src/box/user.cc b/src/box/user.cc
index 6b4a5565e7c73c8c4f205b027879068a10f44bd9..c8991b15a868d4d8c0938e81442a217cc9cafbab 100644
--- a/src/box/user.cc
+++ b/src/box/user.cc
@@ -524,12 +524,14 @@ user_find_by_name(const char *name, uint32_t len)
 	uint32_t uid;
 	if (schema_find_id(BOX_USER_ID, 2, name, len, &uid) != 0)
 		return NULL;
-	struct user *user = user_by_id(uid);
-	if (user == NULL || user->def->type != SC_USER) {
-		diag_set(ClientError, ER_NO_SUCH_USER, tt_cstr(name, len));
-		return NULL;
+	if (uid != BOX_ID_NIL) {
+		struct user *user = user_by_id(uid);
+		if (user != NULL && user->def->type == SC_USER)
+			return user;
 	}
-	return user;
+	diag_set(ClientError, ER_NO_SUCH_USER,
+		 tt_cstr(name, MIN(BOX_INVALID_NAME_MAX, len)));
+	return NULL;
 }
 
 void
diff --git a/test/box/access.result b/test/box/access.result
index 01126a94b6b6d84f06c1e2124311bee885bf07fb..9554991add79703b955f1a756410d89ea7fe3f87 100644
--- a/test/box/access.result
+++ b/test/box/access.result
@@ -248,7 +248,8 @@ session.su('does not exist')
 -- allowed name.
 session.su(string.rep('a', 66000))
 ---
-- error: name length 66000 is greater than BOX_NAME_MAX
+- error: User 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is
+    not found
 ...
 --------------------------------------------------------------------------------
 -- Check if identifiers obey the common constraints