The transactional endpoint may in any response include zero or more status codes, indicating issues or information for the client. Each status code follows the same format: "Neo.[Classification].[Category].[Title]". The fact that a status code is returned by the server does always mean there is a fatal error. Status codes can also indicate transient problems that may go away if you retry the request.
What the effect of the status code is can be determined by its classification.
Note This is not the same thing as HTTP status codes. Neo4j Status Codes are returned in the response body, at the very end of the response. |
Classifications
Classification | Description | Effect on transaction |
---|---|---|
| The Client sent a bad request - changing the request might yield a successful outcome. | Rollback |
| There are notifications about the request sent by the client. | None |
| The database cannot service the request right now, retrying later might yield a successful outcome. | Rollback |
| The database failed to service the request. | Rollback |
Status codes
This is a complete list of all status codes Neo4j may return, and what they mean.
Status Code | Description |
---|---|
| This is a read only database, writing or modifying the database is not allowed. |
| The request (directly or indirectly) referred to a legacy index that does not exist. |
| Failed to invoke a procedure. See the detailed error description for exact cause. |
| A request referred to a procedure that is not registered with this database instance. If you are deploying custom procedures in a cluster setup, ensure all instances in the cluster have the procedure jar file deployed. |
| The database failed to register a procedure, refer to the associated error message for details. |
| A procedure is using or receiving a value of an invalid type. |
| The client provided an invalid request. |
| The client provided a request that was missing required fields, or had values that are not allowed. |
| The request cannot be performed outside of a transaction, and there is no transaction present to use. Wrap your request in a transaction and retry. |
| Unable to perform operation because it would clash with a pre-existing constraint. |
| The request (directly or indirectly) referred to a constraint that does not exist. |
| A constraint imposed by the database was violated. |
| Unable to create constraint because data that exists in the database violates it. |
| A requested operation can not be performed on the specified index because the index is part of a constraint. If you want to drop the index, for instance, you must drop the constraint. |
| Unable to perform operation because it would clash with a pre-existing index. |
| The request (directly or indirectly) referred to an index that does not exist. |
| A token name, such as a label, relationship type or property key, used is not valid. Tokens cannot be empty strings and cannot be null. |
| The client has provided incorrect authentication details too many times in a row. |
| The credentials have expired and need to be updated. |
| A TLS encrypted connection is required. |
| An attempt was made to perform an unauthorized action. |
| The client is unauthorized due to authentication failure. |
| The statement is attempting to perform operations using invalid arguments |
| Invalid use of arithmetic, such as dividing by zero. |
| A constraint imposed by the statement is violated by the data in the database. |
| The statement refers to a non-existent entity. |
| The statement is referring to a label that does not exist. |
| The statement refers to a parameter that was not provided in the request. |
| The statement refers to a non-existent property. |
| The statement is syntactically valid, but expresses something that the database cannot do. |
| The statement contains invalid or unsupported syntax. |
| The statement is attempting to perform operations on values with types that are not supported by the operation. |
| The transaction is of the wrong type to service the request. For instance, a transaction that has had schema modifications performed in it cannot be used to subsequently perform data operations, and vice versa. |
| There were concurrent requests accessing the same transaction, which is not allowed. |
| A transaction event handler threw an exception. The transaction will be rolled back. |
| Transaction hook failure. |
| Transaction was marked as both successful and failed. Failure takes precedence and so this transaction was rolled back although it may have looked like it was going to be committed |
| The request referred to a transaction that does not exist. |
| The current transaction has been marked as terminated, meaning no more interactions with it are allowed. There are several reasons this happens - the client might have asked for the transaction to be terminated, an operator might have asked for the database to be shut down, or the current instance is about to go through a cluster role switch. Simply retry your operation in a new transaction. |
| Transaction changes did not pass validation checks |
| This query builds a cartesian product between disconnected patterns. |
| Queries using dynamic properties will use neither index seeks nor index scans for those properties |
| The execution plan for this query contains the Eager operator, which forces all dependent data to be materialized in main memory before proceeding |
| Exhaustive shortest path has been planned for your query that means that shortest path graph algorithm might not be used to find the shortest path. Hence an exhaustive enumeration of all paths might be used in order to find the requested shortest path. |
| This feature is deprecated and will be removed in future versions. |
| The database was unable to plan a hinted join. |
| Queries with join hints are not supported by the RULE planner. |
| Adding a schema index may speed up this query. |
| This query is not supported by the COST planner. |
| This query is not supported by the compiled runtime. |
| The provided pattern is unbounded, consider adding an upper limit to the number of node hops. |
| The provided label is not in the database. |
| The provided property key is not in the database |
| The provided relationship type is not in the database. |
| The request (directly or indirectly) referred to an index that is in a failed state. The index needs to be dropped and recreated manually. |
| A malformed schema rule was encountered. Please contact your support representative. |
| Expected set of files not found on disk. Please restore from backup. |
| An unknown error occurred. |
| Creating a requested constraint failed. |
| The database failed to drop a requested constraint. |
| Failed to create an index. |
| The database failed to drop a requested index. |
| The request accessed a label that did not exist. |
| The maximum number of labels supported has been reached, no more labels can be created. |
| The request accessed a property that does not exist. |
| The request accessed a relationship type that does not exist. |
| The request referred to a schema rule that does not exist. |
| The request referred to a schema rule that is defined multiple times. |
| The database was unable to execute the statement. |
| The database was unable to commit the transaction. |
| The database was unable to write transaction to log. |
| The database was unable to roll back the transaction. |
| The database was unable to start the transaction. |
| No leader available at the moment. Retrying your request at a later time may succeed. |
| The database is not currently available to serve your request, refer to the database logs for more details. Retrying your request at a later time may succeed. |
| There is not enough memory to perform the current task. Please try increasing dbms.memory.heap.max_size in the process wrapper configuration (normally in conf/neo4j-wrapper.conf or, if you are using Neo4j Desktop, found through the user interface) or if you are running an embedded installation increase the heap by using -Xmx command line flag, and then restart the database. |
| There is not enough stack size to perform the current task. This is generally considered to be a database error, so please contact Neo4j support. You could try increasing the stack size: for example to set the stack size to 2M, add ‘dbms.jvm.additional=-Xss2M’ to in the process wrapper configuration (normally in conf/neo4j-wrapper.conf or, if you are using Neo4j Desktop, found through the user interface) or if you are running an embedded installation just add -Xss2M as command line flag. |
| An unknown network failure occurred, a retry may resolve the issue. |
| The database schema was modified while this transaction was running, the transaction should be retried. |
| The user was modified concurrently to this request. |
| Access to an external resource failed |
| Database constraints changed since the start of this transaction |
| This transaction, and at least one more transaction, has acquired locks in a way that it will wait indefinitely, and the database has aborted it. Retrying this transaction will most likely be successful. |
| Transactions rely on assumptions around the state of the Neo4j instance they execute on. For instance, transactions in a cluster may expect that they are executing on an instance that can perform writes. However, instances may change state while the transaction is running. This causes assumptions the instance has made about how to execute the transaction to be violated - meaning the transaction must be rolled back. If you see this error, you should retry your operation in a new transaction. |
| The lock session under which this transaction was started is no longer valid. |