Informix Error -200
-200 Identifier is too long.
An SQL identifier exceeded the maximum number of characters. In IBM Informix Dynamic Server 9.2x or later, the maximum length for identifiers in SQL statements is 128 characters. In other Informix database servers, the maximum length for identifiers in SQL statements is 18 characters.
Check that no identifier in the statement is longer than the maximum length and that no punctuation error, such as a missing space or comma, combines two identifiers into one.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-200 marks a real transition point in this number range: it's not an "ISAM error:" message at all, and it's the first of what becomes a long run of general SQL parser/semantic errors rather than ISAM-layer conditions. The limit itself is version-dependent — 128 characters on IBM Informix Dynamic Server 9.2x or later, 18 characters on other Informix database servers — and the official guidance flags a second cause that's easy to overlook.
- A genuinely long identifier — a table name, column name, or alias exceeding the version-specific maximum.
- A punctuation error combining two identifiers into one. A missing space, comma, or other separator can merge two ordinary, correctly-sized identifiers into what the parser reads as a single, much longer one — this is explicitly called out in the official guidance and is often the actual cause even when the statement looks like it has one long name at a glance.
- Auto-generated identifiers growing beyond the limit over time — names built by ORMs, code generators, or naming conventions that concatenate multiple pieces of context (table, column, purpose) can grow past the limit as conventions become more descriptive.
- SQL ported from a system with a more generous identifier length limit, without checking length compatibility against Informix's specific limit.
- Version confusion — code written assuming the 128-character limit but actually running against an older or different Informix server enforcing the 18-character limit instead.
Solutions / Resolution
- Check that no identifier in the statement exceeds the maximum length for the specific server version in use — 128 characters for Dynamic Server 9.2x+, 18 for other Informix servers.
- Check for a missing space, comma, or other punctuation that might be combining two identifiers into one — per the official guidance's own explicit tip, this is worth checking even when the statement seems to have only reasonably-sized names.
- Shorten auto-generated or naming-convention-driven identifiers if they've grown too long over time.
- When porting SQL from another system, verify identifier lengths against Informix's actual limit for the target version before assuming compatibility.
- Confirm the server version/product in use if there's any doubt about which limit (128 or 18) applies.
Examples
The genuinely long identifier
CREATE TABLE customer_relationship_management_historical_archive_2026
(id INT);
-- -200 on an older server enforcing the 18-character limit;
-- may be fine on Dynamic Server 9.2x+ if under 128 characters
The punctuation error that's the real cause
SELECT customer_id customer_name FROM customer;
-- missing comma between customer_id and customer_name —
-- the parser reads "customer_id customer_name" combined,
-- producing -200 even though neither name alone is too long
Fix:
SELECT customer_id, customer_name FROM customer;
This is exactly the case the official guidance calls out — check punctuation before assuming any single identifier is genuinely oversized.
Diagnostic Checks
- Count the length of each identifier in the failing statement against the applicable limit for the server version in use.
- Review the statement carefully for missing punctuation between identifiers — a comma or space easy to miss on a quick read.
- Confirm the server version/product to know which limit (128 or 18 characters) actually applies.
Related Errors / Related Topics
- -132 — "ISAM error: rowsize too big." Another length/size-limit condition, though at the row-definition level rather than the identifier level.
- -198 — "Cannot alter table. Too many in-place alters of the table in progress." The other non-"ISAM error:" code in this general numeric neighborhood.
Check for a missing comma or space before assuming any identifier is genuinely too long — the punctuation-error cause the official guidance names is often quicker to spot once you're looking for it specifically.