fix(errors): classify 1364 as database_schema with actionable message

Parses the field name from the MariaDB error and returns a clear
"Schema mismatch: column 'X' is NOT NULL..." message instead of the
raw DB string. Consistent with how 1054/1146 (unknown column/table)
are already handled.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-17 18:39:50 -04:00
parent 950e34cabd
commit 308a7f296f

View File

@@ -43,6 +43,12 @@ def format_db_error(raw_error: str) -> StandardError:
recoverable = True
elif code in [1054, 1146]: # Unknown column / Table
category = "database_schema"
elif code == 1364: # Field has no default value — model/schema mismatch
category = "database_schema"
field_match = re.search(r"Field '([^']+)' doesn't have a default value", message)
if field_match:
field_name = field_match.group(1)
message = f"Schema mismatch: column '{field_name}' is NOT NULL with no default but was not included in the insert. Check the model definition and database schema."
else:
category = "database"