/*
* Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.api;
/**
* This 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.
*/
public class ErrorCode {
// 02: no data
/**
* The 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);
*
*/
public static final int NO_DATA_AVAILABLE = 2000;
// 07: dynamic SQL error
/**
* The error with code 7001
is thrown when
* trying to call a function with the wrong number of parameters.
* Example:
*
* CALL ABS(1, 2)
*
*/
public static final int INVALID_PARAMETER_COUNT_2 = 7001;
// 08: connection exception
/**
* The error with code 8000
is thrown when
* there was a problem trying to create a database lock.
* See the message and cause for details.
*/
public static final int ERROR_OPENING_DATABASE_1 = 8000;
// 21: cardinality violation
/**
* The 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');
*
*/
public static final int COLUMN_COUNT_DOES_NOT_MATCH = 21002;
// 22: data exception
/**
* The 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');
*
*/
public static final int VALUE_TOO_LONG_2 = 22001;
/**
* The 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));
*
*/
public static final int NUMERIC_VALUE_OUT_OF_RANGE_1 = 22003;
/**
* The 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';
*
*/
public static final int INVALID_DATETIME_CONSTANT_2 = 22007;
/**
* The error with code 22012
is thrown when trying to divide
* a value by zero. Example:
*
* CALL 1/0;
*
*/
public static final int DIVISION_BY_ZERO_1 = 22012;
/**
* The 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);
*
*/
public static final int DATA_CONVERSION_ERROR_1 = 22018;
/**
* The 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 '+';
*
*/
public static final int LIKE_ESCAPE_ERROR_1 = 22025;
// 23: constraint violation
/**
* The 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);
*
*/
public static final int NULL_NOT_ALLOWED = 23502;
/**
* The 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;
*
*/
public static final int REFERENTIAL_INTEGRITY_VIOLATED_CHILD_EXISTS_1 = 23503;
/**
* The 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);
*
*/
public static final int DUPLICATE_KEY_1 = 23505;
/**
* The 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);
*
*/
public static final int REFERENTIAL_INTEGRITY_VIOLATED_PARENT_MISSING_1 = 23506;
/**
* The 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;
*
*/
public static final int NO_DEFAULT_SET_1 = 23507;
/**
* The 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);
*
*/
public static final int CHECK_CONSTRAINT_VIOLATED_1 = 23513;
/**
* The error with code 23514
is thrown when
* evaluation of a check constraint resulted in a error.
*/
public static final int CHECK_CONSTRAINT_INVALID = 23514;
// 28: invalid authorization specification
/**
* The 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).
*/
public static final int WRONG_USER_OR_PASSWORD = 28000;
// 3B: savepoint exception
/**
* The 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.
*/
public static final int DEADLOCK_1 = 40001;
// 42: syntax error or access rule violation
/**
* The error with code 42000
is thrown when
* trying to execute an invalid SQL statement.
* Example:
*
* CREATE ALIAS REMAINDER FOR "IEEEremainder";
*
*/
public static final int SYNTAX_ERROR_1 = 42000;
/**
* The error with code 42001
is thrown when
* trying to execute an invalid SQL statement.
* Example:
*
* CREATE TABLE TEST(ID INT);
* INSERT INTO TEST(1);
*
*/
public static final int SYNTAX_ERROR_2 = 42001;
/**
* The 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);
*
*/
public static final int TABLE_OR_VIEW_ALREADY_EXISTS_1 = 42101;
/**
* The 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;
*
*/
public static final int TABLE_OR_VIEW_NOT_FOUND_1 = 42102;
/**
* The 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);
*
*/
public static final int INDEX_ALREADY_EXISTS_1 = 42111;
/**
* The error with code 42112
is thrown when
* trying to drop or reference an index that does not exist.
* Example:
*
* DROP INDEX ABC;
*
*/
public static final int INDEX_NOT_FOUND_1 = 42112;
/**
* The 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);
*
*/
public static final int DUPLICATE_COLUMN_NAME_1 = 42121;
/**
* The error with code 42122
is thrown when
* referencing an non-existing column.
* Example:
*
* CREATE TABLE TEST(ID INT);
* SELECT NAME FROM TEST;
*
*/
public static final int COLUMN_NOT_FOUND_1 = 42122;
// 0A: feature not supported
// HZ: remote database access
//
/**
* The 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.
*/
public static final int GENERAL_ERROR_1 = 50000;
/**
* The 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);
*
*/
public static final int UNKNOWN_DATA_TYPE_1 = 50004;
/**
* The error with code 50100
is thrown when calling an
* unsupported JDBC method or database feature. See the stack trace for
* details.
*/
public static final int FEATURE_NOT_SUPPORTED_1 = 50100;
/**
* The 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);
*
*/
public static final int LOCK_TIMEOUT_1 = 50200;
/**
* The 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();
*
*/
public static final int STATEMENT_WAS_CANCELED = 57014;
/**
* The 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);
*
*/
public static final int FUNCTION_MUST_RETURN_RESULT_SET_1 = 90000;
/**
* The error with code 90001
is thrown when
* Statement.executeUpdate() was called for a SELECT statement.
* This is not allowed according to the JDBC specs.
*/
public static final int METHOD_NOT_ALLOWED_FOR_QUERY = 90001;
/**
* The 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.
*/
public static final int METHOD_ONLY_ALLOWED_FOR_QUERY = 90002;
/**
* The 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: 00023
*
* Correct:
*
* CALL X'000023';
*
*/
public static final int HEX_STRING_ODD_1 = 90003;
/**
* The 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.
*/
public static final int HEX_STRING_WRONG_1 = 90004;
/**
* The error with code 90005
is thrown when
* trying to create a trigger and using the combination of SELECT
* and FOR EACH ROW, which we do not support.
*/
public static final int TRIGGER_SELECT_AND_ROW_BASED_NOT_SUPPORTED = 90005;
/**
* The error with code 90006
is thrown when
* trying to get a value from a sequence that has run out of numbers
* and does not have cycling enabled.
*/
public static final int SEQUENCE_EXHAUSTED = 90006;
/**
* The error with code 90007
is thrown when
* trying to call a JDBC method on an object that has been closed.
*/
public static final int OBJECT_CLOSED = 90007;
/**
* The 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;
*
*/
public static final int INVALID_VALUE_2 = 90008;
/**
* The error with code 90009
is thrown when
* trying to create a sequence with an invalid combination
* of attributes (min value, max value, start value, etc).
*/
public static final int SEQUENCE_ATTRIBUTES_INVALID = 90009;
/**
* The error with code 90010
is thrown when
* trying to format a timestamp or number using TO_CHAR
* with an invalid format.
*/
public static final int INVALID_TO_CHAR_FORMAT = 90010;
/**
* The error with code 90011
is thrown when
* trying to open a connection to a database using an implicit relative
* path, such as "jdbc:h2:test" (in which case the database file would be
* stored in the current working directory of the application). This is not
* allowed because it can lead to confusion where the database file is, and
* can result in multiple databases because different working directories
* are used. Instead, use "jdbc:h2:~/name" (relative to the current user
* home directory), use an absolute path, set the base directory (baseDir),
* use "jdbc:h2:./name" (explicit relative path), or set the system property
* "h2.implicitRelativePath" to "true" (to prevent this check). For Windows,
* an absolute path also needs to include the drive ("C:/..."). Please see
* the documentation on the supported URL format. Example:
*
* jdbc:h2:test
*
*/
public static final int URL_RELATIVE_TO_CWD = 90011;
/**
* The error with code 90012
is thrown when
* trying to execute a statement with an parameter.
* Example:
*
* CALL SIN(?);
*
*/
public static final int PARAMETER_NOT_SET_1 = 90012;
/**
* The 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;
*
*/
public static final int DATABASE_NOT_FOUND_1 = 90013;
/**
* The 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');
*
*/
public static final int PARSE_ERROR_1 = 90014;
/**
* The 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;
*
*/
public static final int SUM_OR_AVG_ON_WRONG_DATATYPE_1 = 90015;
/**
* The 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;
*
*/
public static final int MUST_GROUP_BY_COLUMN_1 = 90016;
/**
* The 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);
*
*/
public static final int SECOND_PRIMARY_KEY = 90017;
/**
* The 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 collected
*
* Correct:
*
* conn.close();
*
*/
public static final int TRACE_CONNECTION_NOT_CLOSED = 90018;
/**
* The error with code 90019
is thrown when
* trying to drop the current user, if there are no other admin users.
* Example:
*
* DROP USER SA;
*
*/
public static final int CANNOT_DROP_CURRENT_USER = 90019;
/**
* The 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:
* - In embedded mode (URL of the form jdbc:h2:~/test) if all
* connections are opened within the same process and class loader.
*
- In server and cluster mode (URL of the form
* jdbc:h2:tcp://localhost/test) using remote connections.
*
* The mixed mode is also supported. This mode requires to start a server
* in the same process where the database is open in embedded mode.
*/
public static final int DATABASE_ALREADY_OPEN_1 = 90020;
/**
* The error with code 90021
is thrown when
* trying to change a specific database property that conflicts with other
* database properties.
*/
public static final int UNSUPPORTED_SETTING_COMBINATION = 90021;
/**
* The error with code 90022
is thrown when
* trying to call a unknown function.
* Example:
*
* CALL SPECIAL_SIN(10);
*
*/
public static final int FUNCTION_NOT_FOUND_1 = 90022;
/**
* The 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);
*
*/
public static final int COLUMN_MUST_NOT_BE_NULLABLE_1 = 90023;
/**
* The error with code 90024
is thrown when
* a file could not be renamed.
*/
public static final int FILE_RENAME_FAILED_2 = 90024;
/**
* The 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.
*/
public static final int FILE_DELETE_FAILED_1 = 90025;
/**
* The error with code 90026
is thrown when
* an object could not be serialized.
*/
public static final int SERIALIZATION_FAILED_1 = 90026;
/**
* The error with code 90027
is thrown when
* an object could not be de-serialized.
*/
public static final int DESERIALIZATION_FAILED_1 = 90027;
/**
* The error with code 90028
is thrown when
* an input / output error occurred. For more information, see the root
* cause of the exception.
*/
public static final int IO_EXCEPTION_1 = 90028;
/**
* The 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();
*
*/
public static final int NOT_ON_UPDATABLE_ROW = 90029;
/**
* The 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).
*/
public static final int FILE_CORRUPTED_1 = 90030;
/**
* The error with code 90031
is thrown when
* an input / output error occurred. For more information, see the root
* cause of the exception.
*/
public static final int IO_EXCEPTION_2 = 90031;
/**
* The error with code 90032
is thrown when
* trying to drop or alter a user that does not exist.
* Example:
*
* DROP USER TEST_USER;
*
*/
public static final int USER_NOT_FOUND_1 = 90032;
/**
* The 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;
*
*/
public static final int USER_ALREADY_EXISTS_1 = 90033;
/**
* The 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.
*/
public static final int TRACE_FILE_ERROR_2 = 90034;
/**
* The 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;
*
*/
public static final int SEQUENCE_ALREADY_EXISTS_1 = 90035;
/**
* The error with code 90036
is thrown when
* trying to access a sequence that does not exist.
* Example:
*
* SELECT NEXT VALUE FOR SEQUENCE XYZ;
*
*/
public static final int SEQUENCE_NOT_FOUND_1 = 90036;
/**
* The error with code 90037
is thrown when
* trying to drop or alter a view that does not exist.
* Example:
*
* DROP VIEW XYZ;
*
*/
public static final int VIEW_NOT_FOUND_1 = 90037;
/**
* The 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;
*
*/
public static final int VIEW_ALREADY_EXISTS_1 = 90038;
/**
* The error with code 90039
is thrown when
* trying to access a CLOB or BLOB object that timed out.
* See the database setting LOB_TIMEOUT.
*/
public static final int LOB_CLOSED_ON_TIMEOUT_1 = 90039;
/**
* The error with code 90040
is thrown when
* a user that is not administrator tries to execute a statement
* that requires admin privileges.
*/
public static final int ADMIN_RIGHTS_REQUIRED = 90040;
/**
* The 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";
*
*/
public static final int TRIGGER_ALREADY_EXISTS_1 = 90041;
/**
* The error with code 90042
is thrown when
* trying to drop a trigger that does not exist.
* Example:
*
* DROP TRIGGER TRIGGER_XYZ;
*
*/
public static final int TRIGGER_NOT_FOUND_1 = 90042;
/**
* The 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";
*
*/
public static final int ERROR_CREATING_TRIGGER_OBJECT_3 = 90043;
/**
* The error with code 90044
is thrown when
* an exception or error occurred while calling the triggers fire method.
* See the root cause for details.
*/
public static final int ERROR_EXECUTING_TRIGGER_3 = 90044;
/**
* The 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);
*
*/
public static final int CONSTRAINT_ALREADY_EXISTS_1 = 90045;
/**
* The 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:;;
*
*/
public static final int URL_FORMAT_ERROR_2 = 90046;
/**
* The error with code 90047
is thrown when
* trying to connect to a TCP server with an incompatible client.
*/
public static final int DRIVER_VERSION_ERROR_2 = 90047;
/**
* The 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.
*/
public static final int FILE_VERSION_ERROR_1 = 90048;
/**
* The error with code 90049
is thrown when
* trying to open an encrypted database with the wrong file encryption
* password or algorithm.
*/
public static final int FILE_ENCRYPTION_ERROR_1 = 90049;
/**
* The 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);
*
*/
public static final int WRONG_PASSWORD_FORMAT = 90050;
/**
* The error with code 90051
is thrown when
* trying to use a scale that is > precision.
* Example:
*
* CREATE TABLE TABLE1 ( FAIL NUMBER(6,24) );
*
*/
public static final int INVALID_VALUE_SCALE_PRECISION = 90051;
/**
* The 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);
*
*/
public static final int SUBQUERY_IS_NOT_SINGLE_COLUMN = 90052;
/**
* The 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;
*
*/
public static final int SCALAR_SUBQUERY_CONTAINS_MORE_THAN_ONE_ROW = 90053;
/**
* The 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;
*
*/
public static final int INVALID_USE_OF_AGGREGATE_FUNCTION_1 = 90054;
/**
* The error with code 90055
is thrown when
* trying to open a database with an unsupported cipher algorithm.
* Supported is AES.
* Example:
*
* jdbc:h2:~/test;CIPHER=DES
*
*/
public static final int UNSUPPORTED_CIPHER = 90055;
/**
* The error with code 90056
is thrown when trying to format a
* timestamp using TO_DATE and TO_TIMESTAMP with an invalid format.
*/
public static final int INVALID_TO_DATE_FORMAT = 90056;
/**
* The 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;
*
*/
public static final int CONSTRAINT_NOT_FOUND_1 = 90057;
/**
* The 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.
*/
public static final int COMMIT_ROLLBACK_NOT_ALLOWED = 90058;
/**
* The 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;
*
*/
public static final int AMBIGUOUS_COLUMN_NAME_1 = 90059;
/**
* The 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
*
*/
public static final int UNSUPPORTED_LOCK_METHOD_1 = 90060;
/**
* The 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 -ano
*
* The column PID is the process id as listed in the Task Manager.
* For Linux, use:
*
* netstat -npl
*
*/
public static final int EXCEPTION_OPENING_PORT_2 = 90061;
/**
* The 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.
*
*/
public static final int FILE_CREATION_FAILED_1 = 90062;
/**
* The error with code 90063
is thrown when
* trying to rollback to a savepoint that is not defined.
* Example:
*
* ROLLBACK TO SAVEPOINT S_UNKNOWN;
*
*/
public static final int SAVEPOINT_IS_INVALID_1 = 90063;
/**
* The error with code 90064
is thrown when
* Savepoint.getSavepointName() is called on an unnamed savepoint.
* Example:
*
* Savepoint sp = conn.setSavepoint();
* sp.getSavepointName();
*
*/
public static final int SAVEPOINT_IS_UNNAMED = 90064;
/**
* The error with code 90065
is thrown when
* Savepoint.getSavepointId() is called on a named savepoint.
* Example:
*
* Savepoint sp = conn.setSavepoint("Joe");
* sp.getSavepointId();
*
*/
public static final int SAVEPOINT_IS_NAMED = 90065;
/**
* The 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
*
*/
public static final int DUPLICATE_PROPERTY_1 = 90066;
/**
* The 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.
*/
public static final int CONNECTION_BROKEN_1 = 90067;
/**
* The 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 case
*
* Correct:
*
* SELECT DISTINCT ID, NAME FROM TEST ORDER BY ID;
*
*/
public static final int ORDER_BY_NOT_IN_RESULT = 90068;
/**
* The 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;
*
*/
public static final int ROLE_ALREADY_EXISTS_1 = 90069;
/**
* The error with code 90070
is thrown when
* trying to drop or grant a role that does not exists.
* Example:
*
* DROP ROLE TEST_ROLE_2;
*
*/
public static final int ROLE_NOT_FOUND_1 = 90070;
/**
* The 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;
*
*/
public static final int USER_OR_ROLE_NOT_FOUND_1 = 90071;
/**
* The error with code 90072
is thrown when
* trying to grant or revoke both roles and rights at the same time.
* Example:
*
* GRANT SELECT, TEST_ROLE ON TEST TO SA;
*
*/
public static final int ROLES_AND_RIGHT_CANNOT_BE_MIXED = 90072;
/**
* The 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)";
*
*/
public static final int METHODS_MUST_HAVE_DIFFERENT_PARAMETER_COUNTS_2 = 90073;
/**
* The 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;
*
*/
public static final int ROLE_ALREADY_GRANTED_1 = 90074;
/**
* The 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;
*
*/
public static final int COLUMN_IS_PART_OF_INDEX_1 = 90075;
/**
* The 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"
*
*/
public static final int FUNCTION_ALIAS_ALREADY_EXISTS_1 = 90076;
/**
* The 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;
*
*/
public static final int FUNCTION_ALIAS_NOT_FOUND_1 = 90077;
/**
* The 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;
*
*/
public static final int SCHEMA_ALREADY_EXISTS_1 = 90078;
/**
* The error with code 90079
is thrown when
* trying to drop a schema that does not exist.
* Example:
*
* DROP SCHEMA UNKNOWN;
*
*/
public static final int SCHEMA_NOT_FOUND_1 = 90079;
/**
* The 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;
*
*/
public static final int SCHEMA_NAME_MUST_MATCH = 90080;
/**
* The 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;
*
*/
public static final int COLUMN_CONTAINS_NULL_VALUES_1 = 90081;
/**
* The error with code 90082
is thrown when
* trying to drop a system generated sequence.
*/
public static final int SEQUENCE_BELONGS_TO_A_TABLE_1 = 90082;
/**
* The 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;
*
*/
public static final int COLUMN_IS_REFERENCED_1 = 90083;
/**
* The 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;
*
*/
public static final int CANNOT_DROP_LAST_COLUMN = 90084;
/**
* The 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 constraint UID
*
* Correct:
*
* ALTER TABLE TEST DROP CONSTRAINT UID;
*
*/
public static final int INDEX_BELONGS_TO_CONSTRAINT_2 = 90085;
/**
* The 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";
*
*/
public static final int CLASS_NOT_FOUND_1 = 90086;
/**
* The error with code 90087
is thrown when
* a method with matching number of arguments was not found in the class.
* Example:
*
* CREATE ALIAS TO_BINARY FOR "java.lang.Long.toBinaryString(long)";
* CALL TO_BINARY(10, 2);
*
*/
public static final int METHOD_NOT_FOUND_1 = 90087;
/**
* The error with code 90088
is thrown when
* trying to switch to an unknown mode.
* Example:
*
* SET MODE UNKNOWN;
*
*/
public static final int UNKNOWN_MODE_1 = 90088;
/**
* The 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.TEST
*
* Correct:
*
* SET COLLATION DE;
* CREATE TABLE TEST(NAME VARCHAR PRIMARY KEY);
* INSERT INTO TEST VALUES('Hello', 'World');
*
*/
public static final int COLLATION_CHANGE_WITH_DATA_TABLE_1 = 90089;
/**
* The 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;
*
*/
public static final int SCHEMA_CAN_NOT_BE_DROPPED_1 = 90090;
/**
* The error with code 90091
is thrown when
* trying to drop the role PUBLIC.
* Example:
*
* DROP ROLE PUBLIC;
*
*/
public static final int ROLE_CAN_NOT_BE_DROPPED_1 = 90091;
/**
* The 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.
*/
public static final int CLUSTER_ERROR_DATABASE_RUNS_ALONE = 90093;
/**
* The 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.
*/
public static final int CLUSTER_ERROR_DATABASE_RUNS_CLUSTERED_1 = 90094;
/**
* The 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');
*
*/
public static final int STRING_FORMAT_ERROR_1 = 90095;
/**
* The 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.
*/
public static final int NOT_ENOUGH_RIGHTS_FOR_1 = 90096;
/**
* The 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);
*
*/
public static final int DATABASE_IS_READ_ONLY = 90097;
/**
* The 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.
*/
public static final int DATABASE_IS_CLOSED = 90098;
/**
* The 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'
*
*/
public static final int ERROR_SETTING_DATABASE_EVENT_LISTENER_2 = 90099;
/**
* The 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.
*/
public static final int WRONG_XID_FORMAT_1 = 90101;
/**
* The 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');
*
*/
public static final int UNSUPPORTED_COMPRESSION_OPTIONS_1 = 90102;
/**
* The error with code 90103
is thrown when
* trying to use an unsupported compression algorithm.
* Example:
*
* CALL COMPRESS(STRINGTOUTF8(SPACE(100)), 'BZIP');
*
*/
public static final int UNSUPPORTED_COMPRESSION_ALGORITHM_1 = 90103;
/**
* The error with code 90104
is thrown when
* the data can not be de-compressed.
* Example:
*
* CALL EXPAND(X'00FF');
*
*/
public static final int COMPRESSION_ERROR = 90104;
/**
* The 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);
*
*/
public static final int EXCEPTION_IN_FUNCTION_1 = 90105;
/**
* The 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;
*
*/
public static final int CANNOT_TRUNCATE_1 = 90106;
/**
* The 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;
*
*/
public static final int CANNOT_DROP_2 = 90107;
/**
* The 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.
*/
public static final int OUT_OF_MEMORY = 90108;
/**
* The 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;
*
*/
public static final int VIEW_IS_INVALID_2 = 90109;
/**
* The error with code 90111
is thrown when
* an exception occurred while accessing a linked table.
*/
public static final int ERROR_ACCESSING_LINKED_TABLE_2 = 90111;
/**
* The 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
*
*/
public static final int ROW_NOT_FOUND_WHEN_DELETING_1 = 90112;
/**
* The error with code 90113
is thrown when
* the database URL contains unsupported settings.
* Example:
*
* jdbc:h2:~/test;UNKNOWN=TRUE
*
*/
public static final int UNSUPPORTED_SETTING_1 = 90113;
/**
* The 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;
*
*/
public static final int CONSTANT_ALREADY_EXISTS_1 = 90114;
/**
* The error with code 90115
is thrown when
* trying to drop a constant that does not exists.
* Example:
*
* DROP CONSTANT UNKNOWN;
*
*/
public static final int CONSTANT_NOT_FOUND_1 = 90115;
/**
* The 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;
*
*/
public static final int LITERALS_ARE_NOT_ALLOWED = 90116;
/**
* The 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 -tcpAllowOthers
*
* Or, when starting the server from an application, use:
*
* Server server = Server.createTcpServer("-tcpAllowOthers");
* server.start();
*
*/
public static final int REMOTE_CONNECTION_NOT_ALLOWED = 90117;
/**
* The error with code 90118
is thrown when
* trying to drop a table can not be dropped.
* Example:
*
* DROP TABLE INFORMATION_SCHEMA.SETTINGS;
*
*/
public static final int CANNOT_DROP_TABLE_1 = 90118;
/**
* The 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;
*
*/
public static final int USER_DATA_TYPE_ALREADY_EXISTS_1 = 90119;
/**
* The error with code 90120
is thrown when
* trying to drop a domain that doesn't exist.
* Example:
*
* DROP DOMAIN UNKNOWN;
*
*/
public static final int USER_DATA_TYPE_NOT_FOUND_1 = 90120;
/**
* The 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.
*/
public static final int DATABASE_CALLED_AT_SHUTDOWN = 90121;
/**
* The error with code 90123
is thrown when
* trying mix regular parameters and indexed parameters in the same
* statement. Example:
*
* SELECT ?, ?1 FROM DUAL;
*
*/
public static final int CANNOT_MIX_INDEXED_AND_UNINDEXED_PARAMS = 90123;
/**
* The 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.
*/
public static final int FILE_NOT_FOUND_1 = 90124;
/**
* The 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 MyDecimal
*
* Correct:
*
* BigDecimal bd = new BigDecimal("10.3");
* prep.setBigDecimal(1, bd);
*
*/
public static final int INVALID_CLASS_2 = 90125;
/**
* The 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';
*
*/
public static final int DATABASE_IS_NOT_PERSISTENT = 90126;
/**
* The 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;
* all columns of the result set are from the same table;
* the table is a data table (not a system table or view);
* all columns of the primary key or any unique index are included;
* all columns of the result set are columns of that table.
*/
public static final int RESULT_SET_NOT_UPDATABLE = 90127;
/**
* The 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();
*
*/
public static final int RESULT_SET_NOT_SCROLLABLE = 90128;
/**
* The error with code 90129
is thrown when
* trying to commit a transaction that doesn't exist.
* Example:
*
* PREPARE COMMIT ABC;
* COMMIT TRANSACTION TEST;
*
*/
public static final int TRANSACTION_NOT_FOUND_1 = 90129;
/**
* The 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");
*
*/
public static final int METHOD_NOT_ALLOWED_FOR_PREPARED_STATEMENT = 90130;
/**
* The 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;
*
*/
public static final int CONCURRENT_UPDATE_1 = 90131;
/**
* The error with code 90132
is thrown when
* trying to drop a user-defined aggregate function that doesn't exist.
* Example:
*
* DROP AGGREGATE UNKNOWN;
*
*/
public static final int AGGREGATE_NOT_FOUND_1 = 90132;
/**
* The 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.
*/
public static final int CANNOT_CHANGE_SETTING_WHEN_OPEN_1 = 90133;
/**
* The 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.
*/
public static final int ACCESS_DENIED_TO_CLASS_1 = 90134;
/**
* The 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;
*
*/
public static final int DATABASE_IS_IN_EXCLUSIVE_MODE = 90135;
/**
* The 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);
*
*/
public static final int UNSUPPORTED_OUTER_JOIN_CONDITION_1 = 90136;
/**
* The 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;
*
*/
public static final int CAN_ONLY_ASSIGN_TO_VARIABLE_1 = 90137;
/**
* The 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 final int INVALID_DATABASE_NAME_1 = 90138;
/**
* The 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";
*
*/
public static final int PUBLIC_STATIC_JAVA_METHOD_NOT_FOUND_1 = 90139;
/**
* The 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.
*/
public static final int RESULT_SET_READONLY = 90140;
/**
* The error with code 90141
is thrown when
* trying to change the java object serializer while there was already data
* in the database. The serializer of the database must be set when the
* database is empty.
*/
public static final int JAVA_OBJECT_SERIALIZER_CHANGE_WITH_DATA_TABLE = 90141;
/**
* The error with code 90142
is thrown when
* trying to set zero for step size.
*/
public static final int STEP_SIZE_MUST_NOT_BE_ZERO = 90142;
/**
* The error with code 90143
is thrown when
* trying to fetch a row from the primary index and the row is not there.
* Can happen in MULTI_THREADED=1 case.
*/
public static final int ROW_NOT_FOUND_IN_PRIMARY_INDEX = 90143;
// next are 90110, 90122, 90144
private ErrorCode() {
// utility class
}
/**
* INTERNAL
*/
public static boolean isCommon(int errorCode) {
// this list is sorted alphabetically
switch (errorCode) {
case DATA_CONVERSION_ERROR_1:
case DUPLICATE_KEY_1:
case FUNCTION_ALIAS_ALREADY_EXISTS_1:
case LOCK_TIMEOUT_1:
case NULL_NOT_ALLOWED:
case NO_DATA_AVAILABLE:
case NUMERIC_VALUE_OUT_OF_RANGE_1:
case OBJECT_CLOSED:
case REFERENTIAL_INTEGRITY_VIOLATED_CHILD_EXISTS_1:
case REFERENTIAL_INTEGRITY_VIOLATED_PARENT_MISSING_1:
case SYNTAX_ERROR_1:
case SYNTAX_ERROR_2:
case TABLE_OR_VIEW_ALREADY_EXISTS_1:
case TABLE_OR_VIEW_NOT_FOUND_1:
case VALUE_TOO_LONG_2:
return true;
}
return false;
}
/**
* INTERNAL
*/
public static String getState(int errorCode) {
// To convert SQLState to error code, replace
// 21S: 210, 42S: 421, HY: 50, C: 1, T: 2
switch (errorCode) {
// 02: no data
case NO_DATA_AVAILABLE: return "02000";
// 07: dynamic SQL error
case INVALID_PARAMETER_COUNT_2: return "07001";
// 08: connection exception
case ERROR_OPENING_DATABASE_1: return "08000";
// 21: cardinality violation
case COLUMN_COUNT_DOES_NOT_MATCH: return "21S02";
// 42: syntax error or access rule violation
case TABLE_OR_VIEW_ALREADY_EXISTS_1: return "42S01";
case TABLE_OR_VIEW_NOT_FOUND_1: return "42S02";
case INDEX_ALREADY_EXISTS_1: return "42S11";
case INDEX_NOT_FOUND_1: return "42S12";
case DUPLICATE_COLUMN_NAME_1: return "42S21";
case COLUMN_NOT_FOUND_1: return "42S22";
// 0A: feature not supported
// HZ: remote database access
// HY
case GENERAL_ERROR_1: return "HY000";
case UNKNOWN_DATA_TYPE_1: return "HY004";
case FEATURE_NOT_SUPPORTED_1: return "HYC00";
case LOCK_TIMEOUT_1: return "HYT00";
default:
return "" + errorCode;
}
}
}