collation of DEFAULT expression conflicts with RETURNING clause
Symptoms
A statement failed with SQLSTATE 42P21 (collation_mismatch), reported at severity ERROR. This is a Syntax Error or Access Rule Violation condition: PostgreSQL emits the message collation of DEFAULT expression conflicts with RETURNING clause.
- The client receives SQLSTATE
42P21(collation mismatch). - The operation is rejected at
ERRORlevel; the statement does not complete. - The server adds a
DETAILline with specifics (see below).
What the server log shows
ERROR: collation of DEFAULT expression conflicts with RETURNING clause
DETAIL: "…" versus "…"
Why PostgreSQL raises this
Class 42 (Syntax Error or Access Rule Violation) is raised at parse/analysis time when a statement is malformed, references an object or column that cannot be resolved, or the role lacks privilege for the action.
As described in PostgreSQL’s Section 4.1 Lexical Structure and Appendix A (PostgreSQL Error Codes), SQLSTATE 42P21 carries the condition name collation_mismatch in class Syntax Error or Access Rule Violation. (Paraphrased — see the linked reference for the exact wording.)
Common causes
- A typo, missing keyword, or misplaced clause in the SQL text.
- An object, column, function, or type name could not be resolved on the search_path.
- Wrong identifier case (unquoted names fold to lower case).
- The role lacks the privilege required for the operation.
How to fix it
- Read the caret (
^) in the log — it points at the offending token. - Schema-qualify names or fix
search_path; confirm the object exists. - Quote mixed-case identifiers exactly as created.
- Grant the required privilege or connect as a role that has it.
Version applicability
This message text is present in PostgreSQL 17, 18, 19. It was introduced around PostgreSQL 17; earlier releases do not emit this exact text.
Related & next steps
Reference: PostgreSQL Section 4.1 Lexical Structure.