diesel-rs/diesel · error

expected attribute `name` help: the correct format looks…

Error message

expected attribute `name`
help: the correct format looks like #[diesel({MYSQL_TYPE_NOTE})]

What it means

Compile-time error from parsing #[diesel(mysql_type(...))]. The MysqlType parser accepts a comma-separated attribute list, of which `name` is the only valid key; if no `name = "..."` attribute was supplied inside the parentheses, this fallback error fires naming the missing attribute and showing the correct format. Fix: pass `name = "your_type_name"` inside #[diesel(mysql_type(...))].

Solutions

  1. Add `name = "..."` to the attribute
  2. Remove other keys and provide the required name first
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at diesel_attribute_parser/src/parsers/mysql_type.rs:43 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of diesel-rs/diesel@6fa6ed01b2 (2026-09-07). Data as JSON: /api/errors/e9cae8bf98a5cc6a. Report an issue: GitHub.

Appendix: source

Thrown at diesel_attribute_parser/src/parsers/mysql_type.rs:43

pub struct MysqlType {
    pub name: LitStr,
}

impl Parse for MysqlType {
    fn parse(input: ParseStream) -> Result<Self> {
        let mut name = None;

        for attr in Punctuated::<Attr, Comma>::parse_terminated(input)? {
            match attr {
                Attr::Name(value) => name = Some(value),
            }
        }

        if let Some(name) = name {
            Ok(MysqlType { name })
        } else {
            Err(syn::Error::new(
                input.span(),
                format!(
                    "expected attribute `name`\n\
                     help: the correct format looks like #[diesel({MYSQL_TYPE_NOTE})]"
                ),
            ))
        }
    }
}

View on GitHub (pinned to 6fa6ed01b2)