| Previous | Next |
| hrColumnDoesNotFit | hrColumnIndexed |
hrNullInvalid
The object and state that matter
hrNullInvalid means the target column definition requires a non-null value.
This is the legacy Directory Service backup/restore HRESULT form of JET_errNullInvalid (0xC80005E0).
The key comparison is: hrNullKeyDisallowed is an index key rule; this code is the column nullability contract. The first useful observation is to record column flags, default value, prepared update type, and whether the caller omitted versus explicitly set null. This evidence separates schema definition, row-size accounting, null semantics, multivalue selection, and stale column IDs.
Minimum useful trace
- Code-specific observation: record column flags, default value, prepared update type, and whether the caller omitted versus explicitly set null.
- JET_COLUMNDEF fields, flags, code page, maximum length, and column ID origin; associate it with this result rather than with a later generic exception.
- the encoded value length, null/empty state, and itag sequence; associate it with this result rather than with a later generic exception.
- the complete row-size contribution from fixed, variable, tagged, and long-value data.
How to avoid a false diagnosis
hrInvalidColumnType | the JET_coltyp value or its option combination is unsupported for this column definition |
|---|---|
hrRecordTooBig | the assembled row exceeds the record-size budget after fixed, variable, tagged, and key overhead are considered |
hrColumnTooBig | the value exceeds the maximum length declared or supported for that column type |
The ESE objects in play
| Diagnostic layer | column schema, row-size accounting, tagged/multivalued storage, and column identifiers |
|---|---|
| Typical API surface | JetAddColumn, JetDeleteColumn, JetSetColumn, JetRetrieveColumn, and JET_COLUMNDEF |
| Code-specific condition | the target column definition requires a non-null value |
| First corrective direction | supply a valid value or change the schema through a migration that handles existing rows |
Fixed, variable, tagged, and long-value columns consume row space differently. Column IDs are metadata scoped to a table and should be refreshed after schema changes.
Safe recovery sequence
- Freeze the failing request context and record
0xC80005E0, the Jet API name, and the current instance/session ownership. - Verify the code-specific precondition: record column flags, default value, prepared update type, and whether the caller omitted versus explicitly set null.
- Apply the targeted fix: supply a valid value or change the schema through a migration that handles existing rows.
- Before retrying the operation, reconcile column metadata, row layout, and the exact stored value state.
Actions that can hide or worsen the problem
- Do not alter the column schema in place without a migration and rollback plan.
- Do not collapse null, zero-length data, missing value, and tagged-value deletion into one state.
Technical references
Looking for a different code? Search another status or error code.