This error is generated when a user attempts to execute a BEGIN WORK, COMMIT WORK, or ROLLBACK WORK statement within a global transaction.
This error is generated when you attempt to execute any of the following statements within an X/Open distributed transaction-processing environment:
Within this environment, you can execute a single DATABASE statement after an xa_open call to specify a current database. However, after this database is selected, no other DATABASE statement can be executed. This error is generated when you attempt to execute a second DATABASE statement.
Within an X/Open distributed transaction processing environment, you cannot open a database in exclusive mode.
An attempt was made either to insert a null value into a column that is part of a primary key, or to add a primary constraint to a table that has a NULL value in one of the key columns.
A table can have only one primary key.
An attempt was made either to drop a currently executing procedure or to run UPDATE STATISTICS on a currently running procedure. This condition can occur if a procedure tries to drop itself or if a nested procedure tries to drop a procedure that called it.
Example of error:
CREATE PROCEDURE testproc() … DROP PROCEDURE testproc; — error END PROCEDURE
Correction: You can use an ON EXCEPTION statement to trap this error and not carry out the DROP PROCEDURE or UPDATE STATISTICS statement.
This error also occurs if you try to drop a function or procedure that a functional index is using.
A user who does not own the procedure or is not DBA must have Execute privilege in order to run a procedure.
The same column is specified more than once in the column list of the FOR clause in the CREATE OPTICAL CLUSTER statement. Change your statement so that no column appears more than once.
You have attempted to create a new optical cluster with the name of an existing cluster. You must either drop the existing cluster or re-execute your statement using a different cluster name.
You have already created an optical cluster using the named column. Because a single column can be part of only one optical cluster, your attempt to create a new cluster on this column has failed.
This error can occur with explicitly prepared statements. These statements have the following form:
PREPARE statement id FROM quoted string
After a statement has been prepared in the database server and before execution of the statement, a table to which the statement refers might have been renamed or altered, possibly changing the structure of the table. Problems might occur as a result. Adding an index to the table after preparing the statement can also invalidate the statement. A subsequent OPEN command for a cursor will fail if the cursor refers to the invalid prepared statement; the failure will occur even if the OPEN command has the WITH REOPTIMIZATION clause.
If an index was added after the statement was prepared, you must prepare the statement again and declare the cursor again. You cannot simply reopen the cursor if it was based on a prepared statement that is no longer valid.
This error can also occur with SPL routines. Before the database server executes a new SPL routine the first time, it optimizes the code (statements) in the SPL routine. Optimization makes the code depend on the structure of the tables that the procedure references. If the table structure changes after the procedure is optimized, but before it is executed, this error can occur.
Each SPL routine is optimized the first time that it is run (not when it is created). This behavior means that an SPL routine might succeed the first time it is run but fail later under virtually identical circumstances. The failure of an SPL routine can also be intermittent because failure during one execution forces an internal warning to reoptimize the procedure before the next execution.
The database server keeps a list of tables that the SPL routine references explicitly. Whenever any of these explicitly referenced tables is modified, the database server reoptimizes the procedure the next time the procedure is executed.
However, if the SPL routine depends on a table that is referenced only indirectly, the database server cannot detect the need to reoptimize the procedure after that table is changed. For example, a table can be referenced indirectly if the SPL routine invokes a trigger. If a table that is referenced by the trigger (but not directly by the SPL routine) is changed, the database server does not know that it should reoptimize the SPL routine before running it. When the procedure is run after the table has been changed, this error can occur.
Use one of two methods to recover from this error:
To prevent this error, you can force reoptimization of the SPL routine. To force reoptimization, execute the following statement:
UPDATE STATISTICS FOR PROCEDURE procedure name
You can add this statement to your program in either of the following ways:
For efficiency, you can put the UPDATE STATISTICS statement with the action that occurs less frequently in the program (change of object mode or execution of the procedure). In most cases, the action that occurs less frequently in the program is the change of object mode.
When you follow this method of recovering from this error, you must execute the UPDATE STATISTICS statement for each procedure that references the changed tables indirectly unless the procedure also references the tables explicitly.
You can also recover from this error by simply rerunning the SPL routine. The first time that the stored procedure fails, the database server marks the procedure as in need of reoptimization. The next time that you run the procedure, the database server reoptimizes the procedure before running it. However, running the SPL routine twice might be neither practical nor safe. A safer choice is to use the UPDATE STATISTICS statement to force reoptimization of the procedure.
An attempt to insert an encoded blob descriptor by means of the DESCR() function has failed. See the ISAM error for more information.
You have attempted to use the DESCR() function to insert an encoded blob descriptor into a TEXT or BYTE column that is stored in a dbspace or blobspace. You can use this function only to insert descriptors into blob columns that are stored on optical media.
The decoding of a blob descriptor prior to its insertion into a data row has failed. See the error from the optical subsystem (an error in the -7000 to -7199 range) for more information.
The encoding of a blob descriptor for storage on optical media has failed. See the error from the optical subsystem (in the -7000 to -7199 range) for more information.
An error occurred in retrieving a transaction state. See the ISAM error for more information.
This message appears after an administrator kills a coordinator database server process, thread, or session using tbmode -z or onmode -z any time after the coordinator issues its decision either to commit or roll back a two-phase commit transaction. You must examine the message log or the logical log at each of the database servers for which the status is listed as unknown to determine whether the local transaction was committed or rolled back. If some participating database servers rolled back the transaction, and others committed it, you must determine whether your networked database system is in an inconsistent state. This procedure is described in detail in your Administrator’s Guide.
An invalid data type has been passed to one of the arithmetic functions (HEX(), TRUNC(), ROUND()).
If a database server that is acting as a Resource Manager in an X/Open distributed transaction-processing environment has suspended a transaction, its next statement must be xa_start. All other statements are disallowed.
A global variable cannot be used as a loop variable. Redefine the variable to be local to the loop, or use another (local) variable as the loop variable.
A mismatch exists in the number of columns the SELECT returns and the number of variables that are specified in the INTO list. Correct the number of variables in the INTO list.
You are attempting to execute a procedure from an EXECUTE statement, but it has been redefined since the PREPARE statement was run. You must use the PREPARE statement again on the EXECUTE PROCEDURE statement.
For example, the following sequence of code would cause this error:
$prepare pr_stat from ‘execute procedure testproc()’; … /drop procedure testproc create procedure testproc() …… [same application or different]/ … $execute pr_stat;/triggers error -721/
The database server has run out of memory for stack space. Ask the Informix database administrator to increase the STACKSIZE parameter that is specified in the $ONCONFIG (or $TBCONFIG) file to allocate more memory. The database server must be restarted for the change to take effect.
You attempted to use the START DATABASE WITH NO LOG syntax to remove database logging on an SE database that is ANSI compliant. You cannot turn off logging by running this statement on this kind of database.
Check that $INFORMIXDIR/cnv50t60.sql is in place and readable. If it is, and the system still fails, reinstall the system.
Check that the script file $INFORMIXDIR/cnv50t60.sql is readable. If it is, and the failure still occurs, reinstall the product.
The first argument to dbinfo() should be a quoted string constant. If the first argument to dbinfo() is the string version , then the second argument should also be a quoted string constant.
First argument to dbinfo() must be a quoted string constant.
Check that the first argument to dbinfo() is a quoted string that corresponds to one of the following values: dbspace , sqlca.sqlerrd1 , or sqlca.sqlerrd2 .
You called the dbinfo() function with the dbspace string constant as the first parameter. You must provide either the number of a valid tablespace or an expression that evaluates to such a number as the second parameter. Check that you supplied a number as your second parameter and that it corresponds to the number of a valid tablespace.
Check that the first argument to dbinfo() is a quoted string that corresponds to one of the following values: dbspace, version, sqlca.sqlerrd1, sqlca.sqlerrd2, sessionid, coserverid, utc_to_datetime, utc_current, get_tz or dbhostname .
Unknown first argument of dbinfo argument-name.
The valid arguments to the dbinfo() function are the quoted string dbspace followed by the number of a valid tablespace, or one of the following two values: sqlca.sqlerrd1 or sqlca.sqlerrd2. Check that you supplied one of these values and enclosed the string in quotes.
Your CREATE TRIGGER statement does not include a triggered action. Add a triggered action list to the trigger definition, and resubmit the CREATE TRIGGER statement.
You included a REFERENCING clause in a CREATE TRIGGER statement that does not include a FOR EACH ROW triggered-action section. Either remove the REFERENCING clause or, if it is appropriate, add the missing keywords FOR EACH ROW, followed by the triggered actions that are to occur at that time.
For insert and delete triggers, the offending column is being used in the INTO clause of the EXECUTE PROCEDURE statement (which is only allowed for an update trigger). Remove the column names from the INTO clause.
You cannot use the new or old correlation name outside the FOR EACH ROW section or in the INTO clause of the EXECUTE PROCEDURE statement. You cannot use the new or old correlation name to qualify the SELECT COUNT DISTINCT column. For example, the following statement returns this error:
SELECT COUNT (DISTINCT oldname.colname)
You cannot specify an old correlation name for an insert trigger. You cannot specify a new correlation name for a delete trigger.
You have a CREATE TRIGGER or CREATE VIEW statement inside an SPL routine, and within the CREATE TRIGGER or CREATE VIEW statement, you reference a variable that is defined in the SPL routine. This action is not legal. Remove the reference to the SPL-routine variable from the CREATE TRIGGER or CREATE VIEW statement and try again.
This error is returned in three cases:
Change either the correlation name or the table name, and execute the CREATE TRIGGER statement again.
If a child table is referenced in a correlated subquery that is part of a DELETE statement, the child table cannot be one of the tables on which a delete would cascade. This action is not allowed because the result depends on the order in which the rows are processed. Rewrite your query so that the child table is not referenced in a correlated subquery.
Because data distributions are constructed only in MEDIUM or HIGH modes, specifying the resolution is not meaningful. Remove the RESOLUTION clause, or change the mode from LOW to either MEDIUM or HIGH.
Remove the confidence value from the statement. If the offending statement were:
UPDATE STATISTICS HIGH RESOLUTION 0.1 0.99;
Change it to:
UPDATE STATISTICS HIGH RESOLUTION 0.1;
If you want a distribution that is based upon sampling rather than one that uses all of the data in a column, replace HIGH with MEDIUM.
By default, LOW mode does not remove distributions, so you need to use the DROP DISTRIBUTIONS clause. To remove HIGH or MEDIUM distributions, use the DROP DISTRIBUTIONS clause.
If the value of the confidence desired is greater than 0.99, use HIGH mode. A value of less than 0.80 is not allowed because it will probably yield a poor distribution. If you are reducing the confidence to reduce the time that is required to execute the UPDATE STATISTICS statement, consider using a larger resolution value.
The value of this parameter determines how finely the data distribution is resolved. A resolution of 10.0 implies that the accuracy of any estimate for the application of any single selection filter is limited to (+ or -) 5 percent. A value greater than 10.0 would be of little value because it would not provide sufficient detail about the distribution of the data.
You are creating a trigger for an event, but another trigger already exists for that event. You can have only one insert or delete trigger on a table. If you are defining multiple triggers that occur on an update, the column lists in the UPDATE statements must be mutually exclusive. You cannot name a column as a triggering column in more than one UPDATE clause.
Delete triggers cannot coexist with referential constraints.
This error occurs if you try to add a delete cascade foreign key to a table that already has a delete trigger on it. This error also occurs if you try to add a delete trigger to a table that already has a delete cascade foreign key.
You are trying to define an object that already exists in the database.
This error is returned when the triggered SQL statement is BEGIN WORK, COMMIT WORK, ROLLBACK WORK, or SET CONSTRAINTS. These statements are not allowed as triggered actions. Remove the offending statement.
This message is defined for general use to apply to error conditions that you specify in an SPL routine that is a triggered action.
You supply message-string for this message. You can apply this message to error conditions that you specify in an SPL routine. The corrective action for this error depends on the condition that caused it. You, the user, define both the condition and the message text.
This error is returned when a triggered SQL statement acts on the triggering table, or when both statements are updates, and the column that is updated in the triggered action is the same as the column that the triggering statement updates.
You exceeded the maximum number of cascading triggers, which is 61. You may be setting off triggers without realizing it. You can query the systriggers system catalog table to find out what triggers exist in the database. To trace the triggered actions, place the action clause of the initial trigger in an SPL routine, and use the SPL TRACE statement.
An external database server before Version 5.01 sent the triggering statement or cursor operation. This action is not allowed.
This internal error should not occur unless the database has been corrupted in some way. To rebuild the distribution, use UPDATE STATISTICS. If the error recurs, please note all circumstances and contact Informix Technical Support.
The action clause of the trigger contains an SPL routine that is not called in a data manipulation statement, and an external database server before Version 5.01 will execute the procedure. This action is not allowed. An SPL routine that is called within a data manipulation statement cannot execute certain SQL statements, including transaction-related statements. Transaction-related statements are not allowed within an SPL routine that is a triggered action. A database server before Version 5.01 cannot check for this condition, so the procedure is not allowed. If possible, execute the procedure on a Version 5.01 or later database server.
Wait a while and retry your Smart Disk operation.
Licensing enforcement is configured for only one user; multiple users cannot use the product at the same time. If you are using the product from a remote computer, the product is licensed only for a nonnetworked environment.If you are using the product from a local computer, wait until the current user exits and try again.
The system cannot find the user license file. The user license file might not have been installed, or it might have been installed improperly. Also, you might not have the correct file or directory permissions to access the user license file. Consult your installation documentation.
You might not have appropriate permission for your particular action. Check with your system administrator.
The evaluation version of this product will work only for a specified period of time. This version allows you to evaluate the product but not use it permanently. When the evaluation version expires, call Informix to order a standard version of the product.
If this internal error recurs, please note all circumstances and contact Informix Technical Support.
If you use the CONNECT TO statement to connect to a server, you cannot implicitly reconnect to another server through one of the DATABASE statements (DATABASE, START DATABASE, and so on). You must switch to it with the SET CONNECTION statement.
If you use the CONNECT TO database@server syntax to connect to a database and server, you cannot select another database until you disconnect your current connection.
Your remote procedure must execute a COMMIT WORK or ROLLBACK WORK statement before that procedure returns control to your application.
Your INFORMIXSERVER environment variable does not match the DBSERVERNAME or any of the DBSERVERALIASES settings in the ONCONFIG configuration file of the server to which you are trying to connect. Check your environment variables and the ONCONFIG configuration file. Check that INFORMIXSERVER matches one of the settings in the ONCONFIG file.
This error indicates that an internal memory limitation in the SQL parser has been reached. This condition can occur if your query contains many nested expressions. For example, the query might contain many occurrences of AND and/or OR in the WHERE clause. To work around this condition, rewrite the query to eliminate some of the nested expressions.
This all-purpose message indicates a problem when a user tries to connect to a secure database server. Contact your security administrator or DBA for how to proceed.
You tried to run the UPDATE STATISTICS statement with the DROP DISTRIBUTIONS clause on the entire database in a mode other than LOW. Only user informix or the database administrator can do perform this action.
You cannot execute a prepared statement that has been declared. However, to specify output variables for a prepared singleton SELECT statement, use EXECUTE INTO (or EXECUTE PROCEDURE INTO) instead of executing DECLARE, OPEN, and FETCH statements.
With INFORMIX-ESQL/C, if you use a host variable in an INSERT statement or in the WHERE clause of an SQL statement, and the database is ANSI compliant, the string must be null terminated.
You cannot perform an UPDATE or INSERT operation on a table that resides across a network when you are using views that have check options. Remove the all check options from the view, or perform the UPDATE/INSERT locally.
If this internal error recurs, please note all circumstances and contact Informix Technical Support.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
This error can occur during a record insert or update. The most likely cause is an incorrect fragmentation specification that did not specify a REMAINDER. The easiest correction is to add a REMAINDER fragment to your SQL statement. However, the best correction is probably to reexamine the original fragmentation specification, figure out what is wrong, and fix it with an ALTER FRAGMENT statement.
When you add a fragment to an expression-based fragmentation strategy, you must specify an expression for the new fragment. Restate your SQL statement to include a fragment expression.
If table fragmentation is based on a round-robin strategy, you cannot specify a fragment expression during an ALTER FRAGMENT operation.
The dbspace that is specified during an ALTER FRAGMENT operation is incorrect because that dbspace contains no fragment. Specify a dbspace that has a fragment.
During an ALTER FRAGMENT operation, the rows could not be moved to another fragmentation strategy. See the accompanying ISAM error for more information on why the ALTER FRAGMENT operation failed.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
During an ALTER FRAGMENT operation, the fragmentation strategy for the index could not be altered. See the accompanying ISAM error for more information on why the ALTER FRAGMENT operation failed.
You cannot attach the same table multiple times. Check that your alter fragment specification attaches the same table only once.
You cannot perform the ALTER FRAGMENT operation because the table or index is not fragmented. Fragment the table or index, or do not perform the fragmentation operation.
You tried to alter a fragment that is based on a temporary table. In general, dynamic modification of a TEMP table is not allowed. You must re-create the temporary table if you require a different fragmentation scheme.
When you attach tables, the consumed table cannot be fragmented.
Incompatible table schemas do not allow you to perform an attach. When you perform an attach, the table schemas must be identical. Use the ALTER TABLE statement to first make the schemas compatible and then perform an ALTER FRAGMENT…ATTACH operation.
Existing referential constraints do not allow you to perform a detach. You must drop the referential constraints before you perform the detach on the dbspace or table.
You must alter fragmentation expressions to remove references to the column before the column can be dropped.
The surviving table is either nonfragmented or hash-fragmented and must appear in the attach list in order for its existing fragment(s) to be properly positioned in the resulting fragmentation scheme.
If you do not specify storage-spec in a CREATE INDEX statement, the indexes are fragmented the same as the underlying table, subject to all the restrictions on fragmented indexes. For example, an error is returned if the underlying fragmentation strategy is round-robin, and the index is unique. You cannot alter this type of index fragmentation. If you want to change the index fragmentation, use the INIT option of ALTER INDEX to detach the index. That operation makes the index and table independent and lets you alter each independently.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
If you cannot find a direct cause for this internal error, please note all circumstances and contact Informix Technical Support.
You cannot create rowids multiple times. You attempted to add rowids to a table that was already defined with rowids. Do not run the command that caused this error.
Check the INFORMIXDIR environment variable to ensure that it is set to the correct value. Also, check INFORMIXDIR\ETC\PASSWD, the Informix password file. If the Informix password file is corrupted or deleted, reinstall the INFORMIX-SE database server.
If you intend to communicate with an INFORMIX-OnLine for NetWare database server across a network, you must run the INETIPX.EXE TSR (terminate-and-stay-resident program) in the DOS environment. Check that you have enough memory to load this TSR.