ErrorCodeThis class defines the error codes used for SQL exceptions. Error messages are formatted as follows:{ error message (possibly translated; may include quoted data) } { error message in English if different } { SQL statement if applicable } { [ error code - build number ] }Example: Syntax error in SQL statement "SELECT * FORM[*] TEST "; SQL statement: select * form test [42000-125]The [*] marks the position of the syntax error (FORM instead of FROM in this case). The error code is 42000, and the build number is 125, meaning version 1.2.125. NO_DATA_AVAILABLE = 2000The error with code
2000 is thrown when
the result set is positioned before the first or after the last row, or
not on a valid row for the given operation.
Example of wrong usage:
ResultSet rs = stat.executeQuery("SELECT * FROM DUAL"); rs.getString(1);Correct: ResultSet rs = stat.executeQuery("SELECT * FROM DUAL"); rs.next(); rs.getString(1); COLUMN_COUNT_DOES_NOT_MATCH = 21002The error with code
21002 is thrown when the number of
columns does not match. Possible reasons are: for an INSERT or MERGE
statement, the column count does not match the table or the column list
specified. For a SELECT UNION statement, both queries return a different
number of columns. For a constraint, the number of referenced and
referencing columns does not match. Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR); INSERT INTO TEST VALUES('Hello'); VALUE_TOO_LONG_2 = 22001The error with code
22001 is thrown when
trying to insert a value that is too long for the column.
Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR(2)); INSERT INTO TEST VALUES(1, 'Hello'); NUMERIC_VALUE_OUT_OF_RANGE_1 = 22003The error with code
22003 is thrown when a value is out of
range when converting to another data type. Example:
CALL CAST(1000000 AS TINYINT); SELECT CAST(124.34 AS DECIMAL(2, 2)); INVALID_DATETIME_CONSTANT_2 = 22007The error with code
22007 is thrown when
a text can not be converted to a date, time, or timestamp constant.
Examples:
CALL DATE '2007-January-01'; CALL TIME '14:61:00'; CALL TIMESTAMP '2001-02-30 12:00:00'; DIVISION_BY_ZERO_1 = 22012The error with code
22012 is thrown when trying to divide
a value by zero. Example:
CALL 1/0; DATA_CONVERSION_ERROR_1 = 22018The error with code
22018 is thrown when
trying to convert a value to a data type where the conversion is undefined,
or when an error occurred trying to convert.
Example:
CALL CAST(DATE '2001-01-01' AS BOOLEAN); CALL CAST('CHF 99.95' AS INT); LIKE_ESCAPE_ERROR_1 = 22025The error with code
22025 is thrown when using an invalid
escape character sequence for LIKE or REGEXP. The default escape
character is '\'. The escape character is required when searching for
the characters '%', '_' and the escape character itself. That means if
you want to search for the text '10%', you need to use LIKE '10\%'. If
you want to search for 'C:\temp' you need to use 'C:\\temp'. The escape
character can be changed using the ESCAPE clause as in LIKE '10+%' ESCAPE
'+'. Example of wrong usage:
CALL 'C:\temp' LIKE 'C:\temp'; CALL '1+1' LIKE '1+1' ESCAPE '+';Correct: CALL 'C:\temp' LIKE 'C:\\temp'; CALL '1+1' LIKE '1++1' ESCAPE '+'; NULL_NOT_ALLOWED = 23502The error with code
23502 is thrown when
trying to insert NULL into a column that does not allow NULL.
Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR NOT NULL); INSERT INTO TEST(ID) VALUES(1); REFERENTIAL_INTEGRITY_VIOLATED_CHILD_EXISTS_1 = 23503The error with code
23503 is thrown when trying to delete
or update a row when this would violate a referential constraint, because
there is a child row that would become an orphan. Example:
CREATE TABLE TEST(ID INT PRIMARY KEY, PARENT INT); INSERT INTO TEST VALUES(1, 1), (2, 1); ALTER TABLE TEST ADD CONSTRAINT TEST_ID_PARENT FOREIGN KEY(PARENT) REFERENCES TEST(ID) ON DELETE RESTRICT; DELETE FROM TEST WHERE ID = 1; DUPLICATE_KEY_1 = 23505The error with code
23505 is thrown when trying to insert
a row that would violate a unique index or primary key. Example:
CREATE TABLE TEST(ID INT PRIMARY KEY); INSERT INTO TEST VALUES(1); INSERT INTO TEST VALUES(1); REFERENTIAL_INTEGRITY_VIOLATED_PARENT_MISSING_1 = 23506The error with code
23506 is thrown when trying to insert
or update a row that would violate a referential constraint, because the
referenced row does not exist. Example:
CREATE TABLE PARENT(ID INT PRIMARY KEY); CREATE TABLE CHILD(P_ID INT REFERENCES PARENT(ID)); INSERT INTO CHILD VALUES(1); NO_DEFAULT_SET_1 = 23507The error with code
23507 is thrown when
updating or deleting from a table with a foreign key constraint
that should set the default value, but there is no default value defined.
Example:
CREATE TABLE TEST(ID INT PRIMARY KEY, PARENT INT); INSERT INTO TEST VALUES(1, 1), (2, 1); ALTER TABLE TEST ADD CONSTRAINT TEST_ID_PARENT FOREIGN KEY(PARENT) REFERENCES TEST(ID) ON DELETE SET DEFAULT; DELETE FROM TEST WHERE ID = 1; CHECK_CONSTRAINT_VIOLATED_1 = 23513The error with code
23513 is thrown when a check
constraint is violated. Example:
CREATE TABLE TEST(ID INT CHECK ID>0); INSERT INTO TEST VALUES(0); WRONG_USER_OR_PASSWORD = 28000The error with code
28000 is thrown when
there is no such user registered in the database, when
the user password does not match, or when the database encryption password
does not match (if database encryption is used).DEADLOCK_1 = 40001The error with code
40001 is thrown when the database
engine has detected a deadlock. The transaction of this session has been
rolled back to solve the problem. A deadlock occurs when a session tries
to lock a table another session has locked, while the other session wants
to lock a table the first session has locked. As an example, session 1
has locked table A, while session 2 has locked table B. If session 1 now
tries to lock table B and session 2 tries to lock table A, a deadlock has
occurred. Deadlocks that involve more than two sessions are also possible.
To solve deadlock problems, an application should lock tables always in
the same order, such as always lock table A before locking table B. For
details, see Wikipedia
Deadlock.SYNTAX_ERROR_1 = 42000The error with code
42000 is thrown when
trying to execute an invalid SQL statement.
Example:
CREATE ALIAS REMAINDER FOR "IEEEremainder"; SYNTAX_ERROR_2 = 42001The error with code
42001 is thrown when
trying to execute an invalid SQL statement.
Example:
CREATE TABLE TEST(ID INT); INSERT INTO TEST(1); TABLE_OR_VIEW_ALREADY_EXISTS_1 = 42101The error with code
42101 is thrown when
trying to create a table or view if an object with this name already exists.
Example:
CREATE TABLE TEST(ID INT); CREATE TABLE TEST(ID INT PRIMARY KEY); TABLE_OR_VIEW_NOT_FOUND_1 = 42102The error with code
42102 is thrown when
trying to query, modify or drop a table or view that does not exists
in this schema and database. A common cause is that the wrong
database was opened.
Example:
SELECT * FROM ABC; INDEX_ALREADY_EXISTS_1 = 42111The error with code
42111 is thrown when
trying to create an index if an index with the same name already exists.
Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR); CREATE INDEX IDX_ID ON TEST(ID); CREATE TABLE ADDRESS(ID INT); CREATE INDEX IDX_ID ON ADDRESS(ID); INDEX_NOT_FOUND_1 = 42112The error with code
42112 is thrown when
trying to drop or reference an index that does not exist.
Example:
DROP INDEX ABC; DUPLICATE_COLUMN_NAME_1 = 42121The error with code
42121 is thrown when trying to create
a table or insert into a table and use the same column name twice.
Example:
CREATE TABLE TEST(ID INT, ID INT); COLUMN_NOT_FOUND_1 = 42122The error with code
42122 is thrown when
referencing an non-existing column.
Example:
CREATE TABLE TEST(ID INT); SELECT NAME FROM TEST; GENERAL_ERROR_1 = 50000The error with code
50000 is thrown when
something unexpected occurs, for example an internal stack
overflow. For details about the problem, see the cause of the
exception in the stack trace.UNKNOWN_DATA_TYPE_1 = 50004The error with code
50004 is thrown when
creating a table with an unsupported data type, or
when the data type is unknown because parameters are used.
Example:
CREATE TABLE TEST(ID VERYSMALLINT); FEATURE_NOT_SUPPORTED_1 = 50100The error with code
50100 is thrown when calling an
unsupported JDBC method or database feature. See the stack trace for
details.LOCK_TIMEOUT_1 = 50200The error with code
50200 is thrown when
another connection locked an object longer than the lock timeout
set for this connection, or when a deadlock occurred.
Example:
CREATE TABLE TEST(ID INT); -- connection 1: SET AUTOCOMMIT FALSE; INSERT INTO TEST VALUES(1); -- connection 2: SET AUTOCOMMIT FALSE; INSERT INTO TEST VALUES(1); STATEMENT_WAS_CANCELED = 57014The error with code
57014 is thrown when
a statement was canceled using Statement.cancel() or
when the query timeout has been reached.
Examples:
stat.setQueryTimeout(1); stat.cancel(); INVALID_PARAMETER_COUNT_2 = 7001The error with code
7001 is thrown when
trying to call a function with the wrong number of parameters.
Example:
CALL ABS(1, 2) ERROR_OPENING_DATABASE_1 = 8000The error with code
8000 is thrown when
there was a problem trying to create a database lock.
See the message and cause for details.FUNCTION_MUST_RETURN_RESULT_SET_1 = 90000The error with code
90000 is thrown when
a function that does not return a result set was used in the FROM clause.
Example:
SELECT * FROM SIN(1); METHOD_NOT_ALLOWED_FOR_QUERY = 90001The error with code
90001 is thrown when
Statement.executeUpdate() was called for a SELECT statement.
This is not allowed according to the JDBC specs.METHOD_ONLY_ALLOWED_FOR_QUERY = 90002The error with code
90002 is thrown when
Statement.executeQuery() was called for a statement that does
not return a result set (for example, an UPDATE statement).
This is not allowed according to the JDBC specs.HEX_STRING_ODD_1 = 90003The error with code
90003 is thrown when
trying to convert a String to a binary value. Two hex digits
per byte are required. Example of wrong usage:
CALL X'00023'; Hexadecimal string with odd number of characters: 00023Correct: CALL X'000023'; HEX_STRING_WRONG_1 = 90004The error with code
90004 is thrown when
trying to convert a text to binary, but the expression contains
a non-hexadecimal character.
Example:
CALL X'ABCDEFGH'; CALL CAST('ABCDEFGH' AS BINARY);Conversion from text to binary is supported, but the text must represent the hexadecimal encoded bytes. OBJECT_CLOSED = 90007The error with code
90007 is thrown when
trying to call a JDBC method on an object that has been closed.INVALID_VALUE_2 = 90008The error with code
90008 is thrown when
trying to use a value that is not valid for the given operation.
Example:
CREATE SEQUENCE TEST INCREMENT 0; PARAMETER_NOT_SET_1 = 90012The error with code
90012 is thrown when
trying to execute a statement with an parameter.
Example:
CALL SIN(?); DATABASE_NOT_FOUND_1 = 90013The error with code
90013 is thrown when
trying to open a database that does not exist using the flag IFEXISTS=TRUE,
or when trying to access a database object with a catalog name that does
not match the database name.
Example:
CREATE TABLE TEST(ID INT); SELECT XYZ.PUBLIC.TEST.ID FROM TEST; PARSE_ERROR_1 = 90014The error with code
90014 is thrown when
trying to parse a date with an unsupported format string, or
when the date can not be parsed.
Example:
CALL PARSEDATETIME('2001 January', 'yyyy mm'); SUM_OR_AVG_ON_WRONG_DATATYPE_1 = 90015The error with code
90015 is thrown when
using an aggregate function with a data type that is not supported.
Example:
SELECT SUM('Hello') FROM DUAL; MUST_GROUP_BY_COLUMN_1 = 90016The error with code
90016 is thrown when
a column was used in the expression list or the order by clause
of a group or aggregate query, and that column is not in the GROUP BY clause.
Example of wrong usage:
CREATE TABLE TEST(ID INT, NAME VARCHAR); INSERT INTO TEST VALUES(1, 'Hello'), (2, 'World'); SELECT ID, MAX(NAME) FROM TEST; Column ID must be in the GROUP BY list.Correct: SELECT ID, MAX(NAME) FROM TEST GROUP BY ID; SECOND_PRIMARY_KEY = 90017The error with code
90017 is thrown when
trying to define a second primary key constraint for this table.
Example:
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR); ALTER TABLE TEST ADD CONSTRAINT PK PRIMARY KEY(NAME); TRACE_CONNECTION_NOT_CLOSED = 90018The error with code
90018 is thrown when
the connection was opened, but never closed. In the finalizer of the
connection, this forgotten close was detected and the connection was
closed automatically, but relying on the finalizer is not good practice
as it is not guaranteed and behavior is virtual machine dependent. The
application should close the connection. This exception only appears in
the .trace.db file. Example of wrong usage:
Connection conn; conn = DriverManager.getConnection("jdbc:h2:˜/test"); conn = null; The connection was not closed by the application and is garbage collectedCorrect: conn.close(); CANNOT_DROP_CURRENT_USER = 90019The error with code
90019 is thrown when
trying to drop the current user, if there are no other admin users.
Example:
DROP USER SA; DATABASE_ALREADY_OPEN_1 = 90020The error with code
90020 is thrown when trying to open a
database in embedded mode if this database is already in use in another
process (or in a different class loader). Multiple connections to the
same database are supported in the following cases:
FUNCTION_NOT_FOUND_1 = 90022The error with code
90022 is thrown when
trying to call a unknown function.
Example:
CALL SPECIAL_SIN(10); COLUMN_MUST_NOT_BE_NULLABLE_1 = 90023The error with code
90023 is thrown when
trying to set a primary key on a nullable column.
Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR); ALTER TABLE TEST ADD CONSTRAINT PK PRIMARY KEY(ID); FILE_RENAME_FAILED_2 = 90024The error with code
90024 is thrown when
a file could not be renamed.FILE_DELETE_FAILED_1 = 90025The error with code
90025 is thrown when
a file could not be deleted, because it is still in use
(only in Windows), or because an error occurred when deleting.SERIALIZATION_FAILED_1 = 90026The error with code
90026 is thrown when
an object could not be serialized.DESERIALIZATION_FAILED_1 = 90027The error with code
90027 is thrown when
an object could not be de-serialized.IO_EXCEPTION_1 = 90028The error with code
90028 is thrown when
an input / output error occurred. For more information, see the root
cause of the exception.NOT_ON_UPDATABLE_ROW = 90029The error with code
90029 is thrown when
calling ResultSet.deleteRow(), insertRow(), or updateRow()
when the current row is not updatable.
Example:
ResultSet rs = stat.executeQuery("SELECT * FROM TEST"); rs.next(); rs.insertRow(); FILE_CORRUPTED_1 = 90030The error with code
90030 is thrown when
the database engine has detected a checksum mismatch in the data
or index. To solve this problem, restore a backup or use the
Recovery tool (org.h2.tools.Recover).IO_EXCEPTION_2 = 90031The error with code
90031 is thrown when
an input / output error occurred. For more information, see the root
cause of the exception.USER_NOT_FOUND_1 = 90032The error with code
90032 is thrown when
trying to drop or alter a user that does not exist.
Example:
DROP USER TEST_USER; USER_ALREADY_EXISTS_1 = 90033The error with code
90033 is thrown when
trying to create a user or role if a user with this name already exists.
Example:
CREATE USER TEST_USER; CREATE USER TEST_USER; TRACE_FILE_ERROR_2 = 90034The error with code
90034 is thrown when
writing to the trace file failed, for example because the there
is an I/O exception. This message is printed to System.out,
but only once.SEQUENCE_ALREADY_EXISTS_1 = 90035The error with code
90035 is thrown when
trying to create a sequence if a sequence with this name already
exists.
Example:
CREATE SEQUENCE TEST_SEQ; CREATE SEQUENCE TEST_SEQ; SEQUENCE_NOT_FOUND_1 = 90036The error with code
90036 is thrown when
trying to access a sequence that does not exist.
Example:
SELECT NEXT VALUE FOR SEQUENCE XYZ; VIEW_NOT_FOUND_1 = 90037The error with code
90037 is thrown when
trying to drop or alter a view that does not exist.
Example:
DROP VIEW XYZ; VIEW_ALREADY_EXISTS_1 = 90038The error with code
90038 is thrown when
trying to create a view if a view with this name already
exists.
Example:
CREATE VIEW DUMMY AS SELECT * FROM DUAL; CREATE VIEW DUMMY AS SELECT * FROM DUAL; ADMIN_RIGHTS_REQUIRED = 90040The error with code
90040 is thrown when
a user that is not administrator tries to execute a statement
that requires admin privileges.TRIGGER_ALREADY_EXISTS_1 = 90041The error with code
90041 is thrown when
trying to create a trigger and there is already a trigger with that name.
CREATE TABLE TEST(ID INT); CREATE TRIGGER TRIGGER_A AFTER INSERT ON TEST CALL "org.h2.samples.TriggerSample$MyTrigger"; CREATE TRIGGER TRIGGER_A AFTER INSERT ON TEST CALL "org.h2.samples.TriggerSample$MyTrigger"; TRIGGER_NOT_FOUND_1 = 90042The error with code
90042 is thrown when
trying to drop a trigger that does not exist.
Example:
DROP TRIGGER TRIGGER_XYZ; ERROR_CREATING_TRIGGER_OBJECT_3 = 90043The error with code
90043 is thrown when
there is an error initializing the trigger, for example because the
class does not implement the Trigger interface.
See the root cause for details.
Example:
CREATE TABLE TEST(ID INT); CREATE TRIGGER TRIGGER_A AFTER INSERT ON TEST CALL "java.lang.String"; ERROR_EXECUTING_TRIGGER_3 = 90044The error with code
90044 is thrown when
an exception or error occurred while calling the triggers fire method.
See the root cause for details.CONSTRAINT_ALREADY_EXISTS_1 = 90045The error with code
90045 is thrown when
trying to create a constraint if an object with this name already exists.
Example:
CREATE TABLE TEST(ID INT NOT NULL); ALTER TABLE TEST ADD CONSTRAINT PK PRIMARY KEY(ID); ALTER TABLE TEST ADD CONSTRAINT PK PRIMARY KEY(ID); URL_FORMAT_ERROR_2 = 90046The error with code
90046 is thrown when
trying to open a connection to a database using an unsupported URL format.
Please see the documentation on the supported URL format and examples.
Example:
jdbc:h2:;; DRIVER_VERSION_ERROR_2 = 90047The error with code
90047 is thrown when
trying to connect to a TCP server with an incompatible client.FILE_VERSION_ERROR_1 = 90048The error with code
90048 is thrown when
the file header of a database files (*.db) does not match the
expected version, or if it is corrupted.FILE_ENCRYPTION_ERROR_1 = 90049The error with code
90049 is thrown when
trying to open an encrypted database with the wrong file encryption
password or algorithm.WRONG_PASSWORD_FORMAT = 90050The error with code
90050 is thrown when trying to open an
encrypted database, but not separating the file password from the user
password. The file password is specified in the password field, before
the user password. A single space needs to be added between the file
password and the user password; the file password itself may not contain
spaces. File passwords (as well as user passwords) are case sensitive.
Example of wrong usage:
String url = "jdbc:h2:˜/test;CIPHER=AES"; String passwords = "filePasswordUserPassword"; DriverManager.getConnection(url, "sa", pwds);Correct: String url = "jdbc:h2:˜/test;CIPHER=AES"; String passwords = "filePassword userPassword"; DriverManager.getConnection(url, "sa", pwds); SUBQUERY_IS_NOT_SINGLE_COLUMN = 90052The error with code
90052 is thrown when
a subquery that is used as a value contains more than one column.
Example of wrong usage:
CREATE TABLE TEST(ID INT); INSERT INTO TEST VALUES(1), (2); SELECT * FROM TEST WHERE ID IN (SELECT 1, 2 FROM DUAL);Correct: CREATE TABLE TEST(ID INT); INSERT INTO TEST VALUES(1), (2); SELECT * FROM TEST WHERE ID IN (1, 2); SCALAR_SUBQUERY_CONTAINS_MORE_THAN_ONE_ROW = 90053The error with code
90053 is thrown when
a subquery that is used as a value contains more than one row.
Example:
CREATE TABLE TEST(ID INT, NAME VARCHAR); INSERT INTO TEST VALUES(1, 'Hello'), (1, 'World'); SELECT X, (SELECT NAME FROM TEST WHERE ID=X) FROM DUAL; INVALID_USE_OF_AGGREGATE_FUNCTION_1 = 90054The error with code
90054 is thrown when
an aggregate function is used where it is not allowed.
Example:
CREATE TABLE TEST(ID INT); INSERT INTO TEST VALUES(1), (2); SELECT MAX(ID) FROM TEST WHERE ID = MAX(ID) GROUP BY ID; UNSUPPORTED_CIPHER = 90055The error with code
90055 is thrown when
trying to open a database with an unsupported cipher algorithm.
Supported are AES and XTEA.
Example:
jdbc:h2:~/test;CIPHER=DES CONSTRAINT_NOT_FOUND_1 = 90057The error with code
90057 is thrown when
trying to drop a constraint that does not exist.
Example:
CREATE TABLE TEST(ID INT); ALTER TABLE TEST DROP CONSTRAINT CID; COMMIT_ROLLBACK_NOT_ALLOWED = 90058The error with code
90058 is thrown when trying to call
commit or rollback inside a trigger, or when trying to call a method
inside a trigger that implicitly commits the current transaction, if an
object is locked. This is not because it would release the lock too
early.AMBIGUOUS_COLUMN_NAME_1 = 90059The error with code
90059 is thrown when
a query contains a column that could belong to multiple tables.
Example:
CREATE TABLE PARENT(ID INT, NAME VARCHAR); CREATE TABLE CHILD(PID INT, NAME VARCHAR); SELECT ID, NAME FROM PARENT P, CHILD C WHERE P.ID = C.PID; UNSUPPORTED_LOCK_METHOD_1 = 90060The error with code
90060 is thrown when
trying to use a file locking mechanism that is not supported.
Currently only FILE (the default) and SOCKET are supported
Example:
jdbc:h2:~/test;FILE_LOCK=LDAP EXCEPTION_OPENING_PORT_2 = 90061The error with code
90061 is thrown when
trying to start a server if a server is already running at the same port.
It could also be a firewall problem. To find out if another server is
already running, run the following command on Windows:
netstat -anoThe column PID is the process id as listed in the Task Manager. For Linux, use: netstat -npl FILE_CREATION_FAILED_1 = 90062The error with code
90062 is thrown when
a directory or file could not be created. This can occur when
trying to create a directory if a file with the same name already
exists, or vice versa.SAVEPOINT_IS_INVALID_1 = 90063The error with code
90063 is thrown when
trying to rollback to a savepoint that is not defined.
Example:
ROLLBACK TO SAVEPOINT S_UNKNOWN; SAVEPOINT_IS_UNNAMED = 90064The error with code
90064 is thrown when
Savepoint.getSavepointName() is called on an unnamed savepoint.
Example:
Savepoint sp = conn.setSavepoint(); sp.getSavepointName(); SAVEPOINT_IS_NAMED = 90065The error with code
90065 is thrown when
Savepoint.getSavepointId() is called on a named savepoint.
Example:
Savepoint sp = conn.setSavepoint("Joe"); sp.getSavepointId(); DUPLICATE_PROPERTY_1 = 90066The error with code
90066 is thrown when
the same property appears twice in the database URL or in
the connection properties.
Example:
jdbc:h2:~/test;LOCK_TIMEOUT=0;LOCK_TIMEOUT=1 CONNECTION_BROKEN_1 = 90067The error with code
90067 is thrown when the client could
not connect to the database, or if the connection was lost. Possible
reasons are: the database server is not running at the given port, the
connection was closed due to a shutdown, or the server was stopped. Other
possible causes are: the server is not an H2 server, or the network
connection is broken.ORDER_BY_NOT_IN_RESULT = 90068The error with code
90068 is thrown when the given
expression that is used in the ORDER BY is not in the result list. This
is required for distinct queries, otherwise the result would be
ambiguous.
Example of wrong usage:
CREATE TABLE TEST(ID INT, NAME VARCHAR); INSERT INTO TEST VALUES(2, 'Hello'), (1, 'Hello'); SELECT DISTINCT NAME FROM TEST ORDER BY ID; Order by expression ID must be in the result list in this caseCorrect: SELECT DISTINCT ID, NAME FROM TEST ORDER BY ID; ROLE_ALREADY_EXISTS_1 = 90069The error with code
90069 is thrown when
trying to create a role if an object with this name already exists.
Example:
CREATE ROLE TEST_ROLE; CREATE ROLE TEST_ROLE; ROLE_NOT_FOUND_1 = 90070The error with code
90070 is thrown when
trying to drop or grant a role that does not exists.
Example:
DROP ROLE TEST_ROLE_2; USER_OR_ROLE_NOT_FOUND_1 = 90071The error with code
90071 is thrown when
trying to grant or revoke if no role or user with that name exists.
Example:
GRANT SELECT ON TEST TO UNKNOWN; ROLES_AND_RIGHT_CANNOT_BE_MIXED = 90072The error with code
90072 is thrown when
trying to grant or revoke if no role or user with that name exists.
Example:
GRANT SELECT, TEST_ROLE ON TEST TO SA; METHODS_MUST_HAVE_DIFFERENT_PARAMETER_COUNTS_2 = 90073The error with code
90073 is thrown when trying to create
an alias for a Java method, if two methods exists in this class that have
this name and the same number of parameters.
Example of wrong usage:
CREATE ALIAS GET_LONG FOR "java.lang.Long.getLong";Correct: CREATE ALIAS GET_LONG FOR "java.lang.Long.getLong(java.lang.String, java.lang.Long)"; ROLE_ALREADY_GRANTED_1 = 90074The error with code
90074 is thrown when
trying to grant a role that has already been granted.
Example:
CREATE ROLE TEST_A; CREATE ROLE TEST_B; GRANT TEST_A TO TEST_B; GRANT TEST_B TO TEST_A; COLUMN_IS_PART_OF_INDEX_1 = 90075The error with code
90075 is thrown when
trying to alter a table and allow null for a column that is part of a
primary key or hash index.
Example:
CREATE TABLE TEST(ID INT PRIMARY KEY); ALTER TABLE TEST ALTER COLUMN ID NULL; FUNCTION_ALIAS_ALREADY_EXISTS_1 = 90076The error with code
90076 is thrown when
trying to create a function alias for a system function or for a function
that is already defined.
Example:
CREATE ALIAS SQRT FOR "java.lang.Math.sqrt" FUNCTION_ALIAS_NOT_FOUND_1 = 90077The error with code
90077 is thrown when
trying to drop a system function or a function alias that does not exist.
Example:
DROP ALIAS SQRT; SCHEMA_ALREADY_EXISTS_1 = 90078The error with code
90078 is thrown when
trying to create a schema if an object with this name already exists.
Example:
CREATE SCHEMA TEST_SCHEMA; CREATE SCHEMA TEST_SCHEMA; SCHEMA_NOT_FOUND_1 = 90079The error with code
90079 is thrown when
trying to drop a schema that does not exist.
Example:
DROP SCHEMA UNKNOWN; SCHEMA_NAME_MUST_MATCH = 90080The error with code
90080 is thrown when
trying to rename a object to a different schema, or when trying to
create a related object in another schema.
For CREATE LINKED TABLE, it is thrown when multiple tables with that
name exist in different schemas.
Example:
CREATE SCHEMA TEST_SCHEMA; CREATE TABLE TEST(ID INT); CREATE INDEX TEST_ID ON TEST(ID); ALTER INDEX TEST_ID RENAME TO TEST_SCHEMA.IDX_TEST_ID; COLUMN_CONTAINS_NULL_VALUES_1 = 90081The error with code
90081 is thrown when
trying to alter a column to not allow NULL, if there
is already data in the table where this column is NULL.
Example:
CREATE TABLE TEST(ID INT); INSERT INTO TEST VALUES(NULL); ALTER TABLE TEST ALTER COLUMN ID VARCHAR NOT NULL; SEQUENCE_BELONGS_TO_A_TABLE_1 = 90082The error with code
90082 is thrown when
trying to drop a system generated sequence.COLUMN_IS_REFERENCED_1 = 90083The error with code
90083 is thrown when
trying to drop a column that is part of a constraint.
Example:
CREATE TABLE TEST(ID INT, PID INT REFERENCES(ID)); ALTER TABLE TEST DROP COLUMN PID; CANNOT_DROP_LAST_COLUMN = 90084The error with code
90084 is thrown when
trying to drop the last column of a table.
Example:
CREATE TABLE TEST(ID INT); ALTER TABLE TEST DROP COLUMN ID; INDEX_BELONGS_TO_CONSTRAINT_1 = 90085The error with code
90085 is thrown when
trying to manually drop an index that was generated by the system
because of a unique or referential constraint. To find out what
constraint causes the problem, run:
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINTS WHERE UNIQUE_INDEX_NAME = '<index name>';Example of wrong usage: CREATE TABLE TEST(ID INT, CONSTRAINT UID UNIQUE(ID)); DROP INDEX UID_INDEX_0; Index UID_INDEX_0 belongs to a constraintCorrect: ALTER TABLE TEST DROP CONSTRAINT UID; CLASS_NOT_FOUND_1 = 90086The error with code
90086 is thrown when
a class can not be loaded because it is not in the classpath
or because a related class is not in the classpath.
Example:
CREATE ALIAS TEST FOR "java.lang.invalid.Math.sqrt"; METHOD_NOT_FOUND_1 = 90087The error with code
90087 is thrown when
the specified method was not found in the class.
Example:
CREATE ALIAS TO_BINARY FOR "java.lang.Long.toBinaryString(long)"; CALL TO_BINARY(10, 2); UNKNOWN_MODE_1 = 90088The error with code
90088 is thrown when
trying to switch to an unknown mode.
Example:
SET MODE UNKNOWN; COLLATION_CHANGE_WITH_DATA_TABLE_1 = 90089The error with code
90089 is thrown when
trying to change the collation while there was already data in
the database. The collation of the database must be set when the
database is empty.
Example of wrong usage:
CREATE TABLE TEST(NAME VARCHAR PRIMARY KEY); INSERT INTO TEST VALUES('Hello', 'World'); SET COLLATION DE; Collation cannot be changed because there is a data table: PUBLIC.TESTCorrect: SET COLLATION DE; CREATE TABLE TEST(NAME VARCHAR PRIMARY KEY); INSERT INTO TEST VALUES('Hello', 'World'); SCHEMA_CAN_NOT_BE_DROPPED_1 = 90090The error with code
90090 is thrown when
trying to drop a schema that may not be dropped (the schema PUBLIC
and the schema INFORMATION_SCHEMA).
Example:
DROP SCHEMA PUBLIC; ROLE_CAN_NOT_BE_DROPPED_1 = 90091The error with code
90091 is thrown when
trying to drop the role PUBLIC.
Example:
DROP ROLE PUBLIC; UNSUPPORTED_JAVA_VERSION = 90092The error with code
90092 is thrown when
the source code is not compiled for the Java platform used.
At runtime, the existence of the class java.sql.Savepoint is checked.
To run this database in JDK 1.3, it is first required to switch the
source code to JDK 1.3 using ant switchSourceJdk13.CLUSTER_ERROR_DATABASE_RUNS_ALONE = 90093The error with code
90093 is thrown when
trying to connect to a clustered database that runs in standalone
mode. This can happen if clustering is not enabled on the database,
or if one of the clients disabled clustering because it can not see
the other cluster node.CLUSTER_ERROR_DATABASE_RUNS_CLUSTERED_1 = 90094The error with code
90094 is thrown when
trying to connect to a clustered database that runs together with a
different cluster node setting than what is used when trying to connect.STRING_FORMAT_ERROR_1 = 90095The error with code
90095 is thrown when
calling the method STRINGDECODE with an invalid escape sequence.
Only Java style escape sequences and Java properties file escape
sequences are supported.
Example:
CALL STRINGDECODE('\i'); NOT_ENOUGH_RIGHTS_FOR_1 = 90096The error with code
90096 is thrown when
trying to perform an operation with a non-admin user if the
user does not have enough rights.DATABASE_IS_READ_ONLY = 90097The error with code
90097 is thrown when
trying to delete or update a database if it is open in read-only mode.
Example:
jdbc:h2:~/test;ACCESS_MODE_DATA=R CREATE TABLE TEST(ID INT); DATABASE_IS_CLOSED = 90098The error with code
90098 is thrown when the database has
been closed, for example because the system ran out of memory or because
the self-destruction counter has reached zero. This counter is only used
for recovery testing, and not set in normal operation.ERROR_SETTING_DATABASE_EVENT_LISTENER_2 = 90099The error with code
90099 is thrown when an error occurred
trying to initialize the database event listener. Example:
jdbc:h2:˜/test;DATABASE_EVENT_LISTENER='java.lang.String' NO_DISK_SPACE_AVAILABLE = 90100The error with code
90100 is thrown when
there is no more space available on the device where the database
files are stored.WRONG_XID_FORMAT_1 = 90101The error with code
90101 is thrown when
the XA API detected unsupported transaction names. This can happen
when mixing application generated transaction names and transaction names
generated by this databases XAConnection API.UNSUPPORTED_COMPRESSION_OPTIONS_1 = 90102The error with code
90102 is thrown when
trying to use unsupported options for the given compression algorithm.
Example of wrong usage:
CALL COMPRESS(STRINGTOUTF8(SPACE(100)), 'DEFLATE l 10');Correct: CALL COMPRESS(STRINGTOUTF8(SPACE(100)), 'DEFLATE l 9'); UNSUPPORTED_COMPRESSION_ALGORITHM_1 = 90103The error with code
90103 is thrown when
trying to use an unsupported compression algorithm.
Example:
CALL COMPRESS(STRINGTOUTF8(SPACE(100)), 'BZIP'); COMPRESSION_ERROR = 90104The error with code
90104 is thrown when
the data can not be de-compressed.
Example:
CALL EXPAND(X'00FF'); EXCEPTION_IN_FUNCTION_1 = 90105The error with code
90105 is thrown when
an exception occurred in a user-defined method.
Example:
CREATE ALIAS SYS_PROP FOR "java.lang.System.getProperty"; CALL SYS_PROP(NULL); CANNOT_TRUNCATE_1 = 90106The error with code
90106 is thrown when
trying to truncate a table that can not be truncated.
Tables with referential integrity constraints can not be truncated.
Also, system tables and view can not be truncated.
Example:
TRUNCATE TABLE INFORMATION_SCHEMA.SETTINGS; CANNOT_DROP_2 = 90107The error with code
90107 is thrown when
trying to drop an object because another object would become invalid.
Example:
CREATE TABLE COUNT(X INT); CREATE TABLE ITEMS(ID INT DEFAULT SELECT MAX(X)+1 FROM COUNT); DROP TABLE COUNT; OUT_OF_MEMORY = 90108The error with code
90108 is thrown when not enough heap
memory was available. A possible solutions is to increase the memory size
using java -Xmx128m ... . Another solution is to reduce
the cache size.VIEW_IS_INVALID_2 = 90109The error with code
90109 is thrown when
trying to run a query against an invalid view.
Example:
CREATE FORCE VIEW TEST_VIEW AS SELECT * FROM TEST; SELECT * FROM TEST_VIEW; ERROR_ACCESSING_LINKED_TABLE_2 = 90111The error with code
90111 is thrown when
an exception occurred while accessing a linked table.ROW_NOT_FOUND_WHEN_DELETING_1 = 90112The error with code
90112 is thrown when a row was deleted
twice while locking was disabled. This is an intern exception that should
never be thrown to the application, because such deleted should be
detected and the resulting exception ignored inside the database engine.
Row not found when trying to delete from index UID_INDEX_0 UNSUPPORTED_SETTING_1 = 90113The error with code
90113 is thrown when
the database URL contains unsupported settings.
Example:
jdbc:h2:~/test;UNKNOWN=TRUE CONSTANT_ALREADY_EXISTS_1 = 90114The error with code
90114 is thrown when
trying to create a constant if a constant with this name already exists.
Example:
CREATE CONSTANT TEST VALUE 1; CREATE CONSTANT TEST VALUE 1; CONSTANT_NOT_FOUND_1 = 90115The error with code
90115 is thrown when
trying to drop a constant that does not exists.
Example:
DROP CONSTANT UNKNOWN; LITERALS_ARE_NOT_ALLOWED = 90116The error with code
90116 is thrown when
trying use a literal in a SQL statement if literals are disabled.
If literals are disabled, use PreparedStatement and parameters instead
of literals in the SQL statement.
Example:
SET ALLOW_LITERALS NONE; CALL 1+1; REMOTE_CONNECTION_NOT_ALLOWED = 90117The error with code
90117 is thrown when
trying to connect to a TCP server from another machine, if remote
connections are not allowed. To allow remote connections,
start the TCP server using the option -tcpAllowOthers as in:
java org.h2.tools.Server -tcp -tcpAllowOthersOr, when starting the server from an application, use: Server server = Server.createTcpServer("-tcpAllowOthers"); server.start(); CANNOT_DROP_TABLE_1 = 90118The error with code
90118 is thrown when
trying to drop a table can not be dropped.
Example:
DROP TABLE INFORMATION_SCHEMA.SETTINGS; USER_DATA_TYPE_ALREADY_EXISTS_1 = 90119The error with code
90119 is thrown when
trying to create a domain if an object with this name already exists,
or when trying to overload a built-in data type.
Example:
CREATE DOMAIN INTEGER AS VARCHAR; CREATE DOMAIN EMAIL AS VARCHAR CHECK LOCATE('@', VALUE) > 0; CREATE DOMAIN EMAIL AS VARCHAR CHECK LOCATE('@', VALUE) > 0; USER_DATA_TYPE_NOT_FOUND_1 = 90120The error with code
90120 is thrown when
trying to drop a domain that doesn't exist.
Example:
DROP DOMAIN UNKNOWN; DATABASE_CALLED_AT_SHUTDOWN = 90121The error with code
90121 is thrown when
a database operation is started while the virtual machine exits
(for example in a shutdown hook), or when the session is closed.CANNOT_MIX_INDEXED_AND_UNINDEXED_PARAMS = 90123The error with code
90123 is thrown when
trying mix regular parameters and indexed parameters in the same statement.
Example:
SELECT ?, ?1 FROM DUAL; FILE_NOT_FOUND_1 = 90124The error with code
90124 is thrown when
trying to access a file that doesn't exist. This can occur when trying to
read a lob if the lob file has been deleted by another application.INVALID_CLASS_2 = 90125The error with code
90125 is thrown when
PreparedStatement.setBigDecimal is called
with object that extends the class BigDecimal, and the system property
h2.allowBigDecimalExtensions is not set. Using extensions of BigDecimal is
dangerous because the database relies on the behavior of BigDecimal.
Example of wrong usage:
BigDecimal bd = new MyDecimal("$10.3"); prep.setBigDecimal(1, bd); Invalid class, expected java.math.BigDecimal but got MyDecimalCorrect: BigDecimal bd = new BigDecimal("10.3"); prep.setBigDecimal(1, bd); DATABASE_IS_NOT_PERSISTENT = 90126The error with code
90126 is thrown when
trying to call the BACKUP statement for an in-memory database.
Example:
jdbc:h2:mem: BACKUP TO 'test.zip'; RESULT_SET_NOT_UPDATABLE = 90127The error with code
90127 is thrown when
trying to update or delete a row in a result set if the result set is
not updatable. Result sets are only updatable if the statement was
created with updatable concurrency, and if the result set contains
all columns of the primary key or of a unique index of a table.RESULT_SET_NOT_SCROLLABLE = 90128The error with code
90128 is thrown when
trying to call a method of the ResultSet that is only supported
for scrollable result sets, and the result set is not scrollable.
Example:
rs.first(); TRANSACTION_NOT_FOUND_1 = 90129The error with code
90129 is thrown when
trying to commit a transaction that doesn't exist.
Example:
PREPARE COMMIT ABC; COMMIT TRANSACTION TEST; METHOD_NOT_ALLOWED_FOR_PREPARED_STATEMENT = 90130The error with code
90130 is thrown when
an execute method of PreparedStatement was called with a SQL statement.
This is not allowed according to the JDBC specification. Instead, use
an execute method of Statement.
Example of wrong usage:
PreparedStatement prep = conn.prepareStatement("SELECT * FROM TEST"); prep.execute("DELETE FROM TEST");Correct: Statement stat = conn.createStatement(); stat.execute("DELETE FROM TEST"); CONCURRENT_UPDATE_1 = 90131The error with code
90131 is thrown when using multi version
concurrency control, and trying to update the same row from within two
connections at the same time, or trying to insert two rows with the same
key from two connections. Example:
jdbc:h2:~/test;MVCC=TRUE Session 1: CREATE TABLE TEST(ID INT); INSERT INTO TEST VALUES(1); SET AUTOCOMMIT FALSE; UPDATE TEST SET ID = 2; Session 2: SET AUTOCOMMIT FALSE; UPDATE TEST SET ID = 3; AGGREGATE_NOT_FOUND_1 = 90132The error with code
90132 is thrown when
trying to drop a user-defined aggregate function that doesn't exist.
Example:
DROP AGGREGATE UNKNOWN; CANNOT_CHANGE_SETTING_WHEN_OPEN_1 = 90133The error with code
90133 is thrown when
trying to change a specific database property while the database is already
open. The MVCC property needs to be set in the first connection
(in the connection opening the database) and can not be changed later on.ACCESS_DENIED_TO_CLASS_1 = 90134The error with code
90134 is thrown when
trying to load a Java class that is not part of the allowed classes.
By default, all classes are allowed, but this can be changed using the system
property h2.allowedClasses.DATABASE_IS_IN_EXCLUSIVE_MODE = 90135The error with code
90135 is thrown when
trying to open a connection to a database that is currently open
in exclusive mode. The exclusive mode is set using:
SET EXCLUSIVE TRUE; UNSUPPORTED_OUTER_JOIN_CONDITION_1 = 90136The error with code
90136 is thrown when
executing a query that used an unsupported outer join condition.
Example:
SELECT * FROM DUAL A LEFT JOIN DUAL B ON B.X=(SELECT MAX(X) FROM DUAL); CAN_ONLY_ASSIGN_TO_VARIABLE_1 = 90137The error with code
90137 is thrown when
trying to assign a value to something that is not a variable.
SELECT AMOUNT, SET(@V, IFNULL(@V, 0)+AMOUNT) FROM TEST; INVALID_DATABASE_NAME_1 = 90138The error with code
90138 is thrown when
trying to open a persistent database using an incorrect database name.
The name of a persistent database contains the path and file name prefix
where the data is stored. The file name part of a database name must be
at least two characters.
Example of wrong usage:
DriverManager.getConnection("jdbc:h2:~/t"); DriverManager.getConnection("jdbc:h2:~/test/");Correct: DriverManager.getConnection("jdbc:h2:~/te"); DriverManager.getConnection("jdbc:h2:~/test/te"); PUBLIC_STATIC_JAVA_METHOD_NOT_FOUND_1 = 90139The error with code
90139 is thrown when
the specified public static Java method was not found in the class.
Example:
CREATE ALIAS TEST FOR "java.lang.Math.test"; RESULT_SET_READONLY = 90140The error with code
90140 is thrown when trying to update or
delete a row in a result set if the statement was not created with
updatable concurrency. Result sets are only updatable if the statement
was created with updatable concurrency, and if the result set contains
all columns of the primary key or of a unique index of a table. |