Informix Error -899
-899 Too many violations.
The number of records in the diagnostics table either exceeds or will exceed the limit that is specified. Limits are specified in the MAX VIOLATIONS clause of the START VIOLATIONS TABLE statement for Extended Parallel Server or the MAX ROWS clause for other IBM Informix database servers.
When a single statement on the target table (such as an INSERT or SET statement) causes more records to be inserted into the diagnostics table than the limit that is specified by the MAX ROWS clause, this error is returned to the user who issued the statement on the target table.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-899 fires when a single statement on the target table would insert more records into the
diagnostics table than the configured limit — per the official guidance, that limit is set via
MAX ROWS in the START VIOLATIONS TABLE statement (or MAX VIOLATIONS on Extended Parallel
Server specifically).
- A single
INSERT/SETstatement producing more violating rows thanMAX ROWSallows, per the official guidance — the direct, only cause. MAX ROWSset too low for the actual scale of violations a bulk operation is expected to surface.
Solutions / Resolution
- Increase
MAX ROWSin theSTART VIOLATIONS TABLEstatement, if a larger number of violations genuinely needs to be captured in one pass:START VIOLATIONS TABLE FOR orders MAX ROWS 10000; - Break the operation into smaller batches, if raising
MAX ROWSisn't desirable, so each batch's violation count stays under the configured limit. - Review why so many violations are occurring — a very high violation count on a single statement often signals a data-quality problem worth investigating directly, rather than just raising the limit to accommodate it.
Examples
Starting a violations table with a higher MAX ROWS
START VIOLATIONS TABLE FOR orders MAX ROWS 10000;
Diagnostic Checks
- Check the current
MAX ROWS/MAX VIOLATIONSsetting for the violations table. - Estimate how many violations the operation is actually expected to produce, to decide between raising the limit and investigating the underlying data quality.
Related Errors / Related Topics
- -895 — "Cannot create violations/diagnostics table." A related violations-table error, at the creation step rather than a capacity limit during use.
- -896 — "Violations table is not started for the target table." A related violations-table-lifecycle error, about a missing violations table rather than one that's active but over capacity.
The diagnostics table's MAX ROWS/MAX VIOLATIONS limit was exceeded by a single statement —
raise the limit, batch the operation, or investigate the underlying data quality.