diesel-rs/diesel · error · syn::Error
Invalid `#[sql_name = ]` attribute
Error message
Invalid `#[sql_name = {attribute_name:?}]` attribute What it means
Compile-time error from take_lit in diesel_table_macro_syntax, which extracts a string-literal value for an attribute such as #[sql_name = "..."] from the macro input. This guard fires when the named attribute was found but its meta is not a NameValue with a literal value — e.g. #[sql_name] without `= "..."`, or a non-literal expression. Fix: write `#[sql_name = "your_name"]` with a string literal.
Solutions
- Use `#[sql_name = "..."]` with a string literal
- Remove the attribute if not needed
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at diesel_table_macro_syntax/src/lib.rs:235 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/b38afab80230865a.
Report an issue: GitHub.
Appendix: source
Thrown at diesel_table_macro_syntax/src/lib.rs:235
if let Some(index) = meta.iter().position(|m| {
m.path()
.get_ident()
.map(|i| i == attribute_name)
.unwrap_or(false)
}) {
let attribute = meta.remove(index);
let span = attribute.span();
let extraction_after_finding_attr = if let syn::Meta::NameValue(MetaNameValue {
value: syn::Expr::Lit(syn::ExprLit { lit, .. }),
..
}) = attribute.meta
{
extraction_fn(lit)
} else {
None
};
return Ok(Some(extraction_after_finding_attr.ok_or_else(|| {
syn::Error::new(
span,
format_args!("Invalid `#[sql_name = {attribute_name:?}]` attribute"),
)
})?));
}
Ok(None)
}
fn take_flag(
meta: &mut Vec<syn::Attribute>,
attribute_name: &'static str,
) -> Result<bool, syn::Error> {
if let Some(index) = meta.iter().position(|m| {
m.path()
.get_ident()
.map(|i| i == attribute_name)
.unwrap_or(false)
}) {View on GitHub (pinned to 6fa6ed01b2)