diff --git a/src/rpc/ddl_apply.rs b/src/rpc/ddl_apply.rs
index b73efdeb797e2622847b1500209f31cd0016deb2..51b1c18ab3a9d148cf34b4fee6d97d286c23f4cb 100644
--- a/src/rpc/ddl_apply.rs
+++ b/src/rpc/ddl_apply.rs
@@ -104,6 +104,15 @@ pub fn apply_schema_change(storage: &Clusterwide, ddl: &Ddl, version: u64) -> Re
             }
 
             let res = (|| -> tarantool::Result<()> {
+                if tt_pk_def.parts.is_empty() {
+                    return Err(tarantool::set_and_get_error!(
+                        tarantool::error::TarantoolErrorCode::ModifyIndex,
+                        "can't create index '{}' in space '{}': parts list cannot be empty",
+                        tt_pk_def.name,
+                        tt_space_def.name,
+                    )
+                    .into());
+                }
                 sys_space.insert(&tt_space_def)?;
                 sys_index.insert(&tt_pk_def)?;
                 if let Some(def) = tt_bucket_id_def {