dynobase-icon
Dynobase

Error: dynamodb property projection cannot be empty

Rafal Wilinski

Answered by Rafal Wilinski

Last updated: October 23rd, 2026

Solution

“Property projection cannot be empty” requires checking which projection is involved. A read’s ProjectionExpression must not be an empty string if supplied, but it is optional. A secondary index’s Projection is a separate schema object with a ProjectionType setting.

For a read, omit ProjectionExpression to return all available attributes, or provide a comma-separated list of names. Aliases handle reserved words and special characters:

import boto3

db = boto3.client("dynamodb", region_name="us-west-2")
page = db.scan(
    TableName="Orders",
    ProjectionExpression="#pk, #status",
    ExpressionAttributeNames={"#pk": "pk", "#status": "status"},
)
print(page.get("Items", []))

This reads one page; follow LastEvaluatedKey for more. For simple names, a projection such as pk, sk is also valid. Missing projected attributes are omitted from results rather than created.

If the error comes from CreateTable, UpdateTable, or CloudFormation, configure the index ProjectionType as KEYS_ONLY, ALL, or INCLUDE. INCLUDE requires the intended NonKeyAttributes; do not provide an empty projection object or confuse it with ProjectionExpression.

See index projections and AWS documentation.

Dynobase is a Professional GUI Client for DynamoDB

Start your 7-day free trial today

Product Features

Download
/
Pricing
/
Member Portal
/
Privacy
/
EULA
/
Twitter
© 2026 Dynobase
+
Still using AWS DynamoDB Console?
Try Dynobase to accelerate your DynamoDB workflow. Start your 7-day free trial today.