Informix Error -554
-554 Syntax disallowed in this database server.
The database server that you are using does not support this statement or some clause in it. When a program starts, the database server in use is chosen based on the SQLEXEC environment variable (for database servers prior to Version 6.0). Several small differences in statement syntax exist between IBM Informix SE and other IBM Informix database servers. For example, IBM Informix SE supports the IN 'pathname' clause of the CREATE TABLE statement while other IBM Informix database servers support the IN dbspace clause instead.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-554 fires when a statement (or a clause within it) is syntactically valid SQL in general but isn't supported by the specific Informix database server product in use — per the official guidance, IBM Informix SE and the other Informix database servers have several small syntax differences.
- A clause specific to one Informix product used against a different one — per the official
guidance's example,
CREATE TABLE ... IN 'pathname'(Informix SE) versusCREATE TABLE ... IN dbspace(other Informix servers). - SQL written for, or copied from, a different Informix product/version than the one the statement is actually being run against.
- A
SQLEXECenvironment-variable misconfiguration on servers prior to Version 6.0, per the official guidance, causing a program to connect to a different database server product than intended.
Solutions / Resolution
- Identify which database server product and version is actually in use, and check whether the statement/clause is supported on it.
- Rewrite the statement using the syntax the actual server supports — per the official
guidance's example, use
IN dbspaceinstead ofIN 'pathname'(or vice versa) depending on which product is in use. - Check
SQLEXEC, per the official guidance, on servers prior to Version 6.0, to confirm the program is actually connecting to the intended database server product.
Examples
SE-specific syntax against a non-SE server
CREATE TABLE orders (order_id INT) IN '/data/orders_dat';
-- -554: this server uses the IN dbspace clause, not IN 'pathname'
Corrected for the actual server in use
CREATE TABLE orders (order_id INT) IN orders_dbspace;
Diagnostic Checks
- Confirm which Informix database server product and version the connection is actually using, since the same statement text can be valid on one and rejected on another.
- Compare the specific clause in question against that product's documented
CREATE TABLE/statement syntax.
Related Errors / Related Topics
No closely related error codes are cross-referenced for -554 in this set yet.
A product/version syntax mismatch, not a general SQL error — confirm which Informix server is actually in use before assuming the statement itself is wrong.