WordPress does not allow updating user_login
for existing users. You may update it using $wpdb->update
as below:
// Sanitizes the username
$user_login = sanitize_user( trim( $user_login ), true );
// Check if the given username exists
if ( ! empty( $user_login ) && ! username_exists( $user_login ) ) {
global $wpdb;
//Update user record
$wpdb->update( $wpdb->users, array('user_login' => $user_login), array('ID' => $user_id));
// Delete cached user objects
wp_cache_delete( $user_id, 'users' );
wp_cache_delete( $user_login, 'userlogins' );
}