Skip to end of metadata
Go to start of metadata


This chapter describes the types of errors that occur frequently in the environment in which an application program using ALTIBASE, and also explains what users have to check for each type.

Connection does not exist

This error occurs when attempting to process a query in the state that the DBMS is not connected or disconnected. This can occur in the following cases:
  1. When executing a query after disconnection by the TIMEOUT policy described previously
  2. In the case of a thread program, a connection unique name that does not exist is used

Check the above details and take appropriate action for the related matters. For example, if it is caused by the TIMEOUT policy, it is necessary to take measures such as increasing the TIMEOUT setting value of the session or performing query tuning.

Communication link failure

Generally, the above "Connection does not exist" occurs after this error. This error means that the session was disconnected while executing the query. The cause of this is generally released by the TIMEOUT policy as described previously. Occasionally, the connection may be disconnected due to a network problem.
Because this problem is a communication socket problem and can be caused by various reasons, it is recommended to check the following:

 

Icon
  1. Check whether there is a log in altibase_boot.log where the session was disconnected.
  2. In the case of a threaded program, check whether the precautions to be followed are not properly observed.
  3. Check if there was any temporary problem on the network.

Calculate stack overflow

This error occurs when the stack required by the query executed as an object used in ALTIBASE internally processing a query is insufficient. The user can process the query normally by executing the query as follows before executing the query and then executing the query with an error.

 

Because this value causes an increase in memory, it is recommended to change and use only the relevant session rather than reflecting it on the entire system.

Conversion not applicable

This error occurs in the following cases.

 

As in the example above, when CLOB data is put in the BYTE column, an error occurs because the type conversion cannot be converted from CLOB to BYTE. That is, there is a matrix compatible with each column type, but this error occurs when such incompatible queries are executed.

For compatibility between column types, please refer to the ALTIBASE ODBC User Manual.

Invalid cursor state

This occurs when attempting to open CURSOR again without normally closing CURSOR. Or, it occurs when attempting to fetch a CURSOR that has already been fetched again.

Occasionally, if the user program is a thread, it may not properly control concurrency for the connection object and thus handle a cursor that is not valid in its own thread. The user must resolve the problem by using it.

Not defined cursor

This error occurs when using CURSOR and the CURSOR NAME is specified, but this CURSOR NAME does not exist. Or, this error occurs in the process of executing DECLARE (PREPARE) CURSOR. The user must develop as follows.

 


Invalid request to process the SQL statement

Generally, this error occurs frequently in thread-structured programs, and also occurs when the order of protocols exchanged between the ALTIBASE server and the client-server is different when the concurrency control for the thread-structured connection object is incorrect as described above.

If it is in the thread-structure program, the user needs to make sure that this concurrency control is correct. Alternatively, the user should check whether the order in which queries should be executed, such as PREPARE->BINGING->EXECUTE, is not properly followed.

Invalid literal

This error occurs when an error such as entering a character into a numeric type.

 

This occurs when an attempt is made to insert data as a string even though the column type is numeric, as in the example above.

Conversely, if the user tries to insert a string into a numeric variable, an error occurs as follows.

 

Invalid length of data type

This error occurs when data is input with a larger value than the column type.

 

As in the example above, the column type can store up to 2 bytes. If the user tries to input 4 bytes, an error occurs because the data value is larger than the specified column size.

Indicator variable required but not supplied error

This error occurs in the development environment using the precompiler. If the return value of the column is returned as NULL in the SELECT result, this error message occurs along with SQL_SUCCESS_WITH_INFO if the INDICATOR variable is not specified.

 

As in the above case, you can explicitly use the INDICATOR variable or use the -unsafe_null option in the Precompiler option to prevent an error from occurring.

Incompatible NLS between the client and the server


This error occurs when an attempt is made to connect to the ALTIBASE server with a character set different from the character set in the server. For example, the server is set to MS949, but this error occurs when the client tries to connect with the US7ASCII value.
The method to query the character set in the server is as follows.

 

SELECT * FROM V$NLS_PARAMETERS; (Version 5.3 or later) SELECT name, value1 FROM V$PROPERTY WHERE name = ‘NLS_USE’; --(Version 5.1 or lower)

 

 

This error only occurs in versions prior to 5.3. From version 5.3, the connection is possible with US7ASCII even if the character set is different. However, if the user tries to store characters such as Hangul due to the difference in character set between the server and the client, it may be stored as incorrect data.

Invalid size of data to bind to host variable Data Size …

This error occurs when a query is processed by inserting data larger than the size of the host variable. For example, it occurs when a string larger than 20 is inserted into a host variable declared as CHAR (20). Generally, it can occur when the user fails to initialize a variable or garbage value comes in. Alternatively, it may occur when the binding of statement B is executed after the PREPARE of statement A because of a concurrency control failure in a thread environment program. (Statement A needs to bind 20 bytes, but is handled incorrectly and binds 100 bytes of Statement B)
First, the user must output the host variable value to check that it does not exceed the length, and check that there is no problem in the concurrency part in the handling of the thread part.

Invalid character in use

Generally, this error occurs when searching LIKE for Korean. For example, when the character set value of the ALTIBASE server is set to KO16KSC5601 but stored and mixed characters that exceed the expression range of KO16KSC5601.
If the above error occurs, it is recommended to resolve as follows.

 

Icon
  1. Download table data with iLoader
  2. Stop the ALTIBASE operation
  3. Change the NLS_USE value of $ALTIBASE_HOME/conf/altibase.properties to MS949
  4. Start the ALTIBASE operation
  5. Truncate the target table which has a problem
  6. Re-upload the data received in (1) with iLoader
In other words, when using Korean, it is recommended to use the same character set as MS949 / UTF8 than KSC5601, and to access and process the character set matching the server.

Too many pages are allocated


For ALTIBASE memory tablespaces, the sum of all memory tablespaces cannot exceed MEM_MAX_DB_SIZE in $ALTIBASE_HOME/conf/altibase.properties. This error message occurs because all space is full.
Therefore, it is necessary to delete unnecessary tables or increase MEM_MAX_DB_SIZE to a larger value and restart ALTIBASE. After these temporary measures, it is necessary to resolve it by checking for some reason the increase in the usage of the memory tablespace and whether there has been a query or mass change of the usage for each table.

The Tablespace does not have enough free space

This error occurs when there is insufficient free space in the tablespace. In the case of a disk tablespaces, it is necessary to add data files.

The transaction exceeds lock timeout specified by user

DML waits for a lock and operates according to the TIMEOUT policy set in the server, but this error occurs immediately when DDL waits due to a lock held by DML.

 

Time

Session A

Session B

T1

INSERT INTO x1 VALUES … (Lock획득)

 

T2

 

ALTER TABLE x1 ADD COLUMN …(Error)

As shown in the table above, if session B attempts to execute DDL while session A acquires the lock with DML first, this error occurs. Therefore, check if a lock exists in the table and resolve it before proceeding.

The update log size ‘…’ is bigger than TRX_UPDATE_MAX_LOGSIZE ‘…’


In ALTIBASE, this error occurs when the amount of redo log created by a change transaction is greater than the value specified in TRX_UPDATE_MAX_LOGSIZE in $ALTIBASE_HOME/trc/altibase.properties to prevent subsequent failures caused by the bulk change operation.
If the transaction must be executed as a single query, the user must change this property value at the session-level and process it as follows.

 

Please be cautious when processing such changes, as more redo log files are created and a situation such as a disk pool failure may occur. Additionally, ALTIBASE attempts to acquire the X-Lock on the table to prevent the increase of resources due to MVCC when making bulk changes, so users need to be aware that queries and changes to the table will be queued due to the X-Lock.

String data right truncated

This error occurs when the value of the character type returned from the SELECT statement is larger than the size of the declared host variable. Check the column size of the table to be accessed by accessing the DB, and declare the size of the used host variable as (column size + 1 byte).

Value overflow

This error occurs when a value larger than the expression range of the numeric column is input.

 

Several statement still opened

This error occurs when a query such as CREATE TABLE is executed while the fetch protocol is in progress. Therefore, DDL must be executed after CURSOR-FETCH is completed in all the same sessions, or DDL queries must be executed after closing the open CURSOR. Alternatively, it is necessary to change the code so that the DDL query is executed in a separate session.

 

  • No labels