diff --git a/src/box/lua/init.c b/src/box/lua/init.c
index 1a8ec05c04dc9fe447d483480dda86d29cf0b544..0ecb3dee3484c3c0fc168a65ea2d3d4f6eb020a1 100644
--- a/src/box/lua/init.c
+++ b/src/box/lua/init.c
@@ -118,6 +118,10 @@ static const char *lua_sources[] = {
 	"box/feedback_daemon", feedback_daemon_lua,
 #endif
 #if ENABLE_SPACE_UPGRADE
+	/*
+	 * Must be loaded after schema_lua, because it redefines
+	 * box.schema.space.upgrade.
+	 */
 	"box/space_upgrade", space_upgrade_lua,
 #endif
 #if ENABLE_AUDIT_LOG
diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
index b19418066f6ae48bc3ab3658d1931b2124a07b0b..59af488c58165ca2b1c69ec0951f3ef2670903c2 100644
--- a/src/box/lua/schema.lua
+++ b/src/box/lua/schema.lua
@@ -812,12 +812,9 @@ function box.schema.space.format(id, format)
     end
 end
 
-function box.schema.space.upgrade(id, ...)
+function box.schema.space.upgrade(id)
     check_param(id, 'id', 'number')
-    if not box.internal.space.upgrade then
-        box.error(box.error.UNSUPPORTED, "Community edition", "space upgrade")
-    end
-    return box.internal.space.upgrade(id, ...)
+    box.error(box.error.UNSUPPORTED, "Community edition", "space upgrade")
 end
 
 box.schema.create_space = box.schema.space.create
@@ -1468,6 +1465,7 @@ local function func_id_by_name(func_name)
     end
     return func.id
 end
+box.internal.func_id_by_name = func_id_by_name -- for space.upgrade
 
 box.schema.index.create = function(space_id, name, options)
     check_param(space_id, 'space_id', 'number')