siyuan-note/siyuan · error
--av, --name and --type are required
Error message
--av, --name and --type are required
What it means
Thrown by `database key add` when any of `--av`, `--name`, or `--type` is empty. Adding a field requires the target database (`--av`), a human-readable field name (`--name`), and a field type string (`--type`) consumed by `model.AddAttributeViewKey`. All three are checked together.
Source
Thrown at kernel/cli/cmd/database.go:148
},
}
var databaseKeyCmd = &cobra.Command{
Use: "key",
Short: "Manage database keys (fields)",
}
var databaseKeyAddCmd = &cobra.Command{
Use: "add --av <avID> --name <name> --type <type>",
Short: "Add a key (field) to database",
RunE: func(cmd *cobra.Command, args []string) error {
avID, _ := cmd.Flags().GetString("av")
name, _ := cmd.Flags().GetString("name")
keyType, _ := cmd.Flags().GetString("type")
icon, _ := cmd.Flags().GetString("icon")
prev, _ := cmd.Flags().GetString("prev")
if avID == "" || name == "" || keyType == "" {
return fmt.Errorf("--av, --name and --type are required")
}
if dryRun {
fmt.Printf("[dry-run] Would add key \"%s\" (type=%s) to database %s\n", name, keyType, avID)
return nil
}
keyID := ast.NewNodeID()
if err := model.AddAttributeViewKey(avID, "", keyID, name, keyType, icon, prev, av.DateDisplayFormatFull); err != nil {
return err
}
model.AppendPushReloadAttrViewEntry(avID)
fmt.Println(keyID)
return nil
},
}
var databaseKeyRemoveCmd = &cobra.Command{View on GitHub (pinned to 251596fc0d)
Solutions
- Provide all three: `siyuan database key add --av <id> --name "Status" --type mSelect`
- Look up supported key types from the av package before choosing `--type`
- Optionally include `--icon` and `--prev` for ordering/icon; those are not required
Example fix
// before siyuan database key add --av 20240101000000-av12345 --name "Status" // after siyuan database key add --av 20240101000000-av12345 --name "Status" --type mSelect
Defensive patterns
Strategy: validation
Validate before calling
if strings.TrimSpace(avID) == "" || strings.TrimSpace(name) == "" || strings.TrimSpace(keyType) == "" {
log.Fatal("--av, --name and --type are all required")
}
validTypes := map[string]bool{"text":true,"number":true,"date":true,"select":true,"mSelect":true,"url":true,"email":true,"phone":true,"template":true,"relation":true,"rollup":true,"lineNumber":true}
if !validTypes[keyType] {
log.Fatalf("unsupported key type %q", keyType)
} Prevention
- Validate the --type against the av package's supported key types
- Provide all three flags from a single config struct to avoid omissions
When it happens
Trigger: Running `siyuan database key add --av <id> --name "Status"` (missing `--type`), or any combination missing one of the three.
Common situations: Not knowing the valid `--type` vocabulary (e.g. `text`, `number`, `date`, `select`, `mSelect`, `url`, `email`, `phone`, `template`, `relation`, `rollup`, etc.), or forgetting to name the field.
Related errors
- --av and --key are required
- --av is required
- --av and --ids are required
- --block is required for non-detached rows
- --av, --key, --item and --value are required
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/ecc337a8727d8c6f.
Report an issue: GitHub.