Appendix A. Reference

Table of Contents

This appendix contains a complete reference of Neo4j status codes.

A.1. Neo4j Status Codes

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.

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.

A.1.1. Classifications

Classification Description Effect on transaction

ClientError

The Client sent a bad request - changing the request might yield a successful outcome.

Rollback

ClientNotification

There are notifications about the request sent by the client.

None

TransientError

The database cannot service the request right now, retrying later might yield a successful outcome.

Rollback

DatabaseError

The database failed to service the request.

Rollback

A.1.2. Status codes

This is a complete list of all status codes Neo4j may return, and what they mean.

Status Code Description

Neo.ClientError.General.ForbiddenOnReadOnlyDatabase

This is a read only database, writing or modifying the database is not allowed.

Neo.ClientError.LegacyIndex.LegacyIndexNotFound

The request (directly or indirectly) referred to a legacy index that does not exist.

Neo.ClientError.Procedure.ProcedureCallFailed

Failed to invoke a procedure. See the detailed error description for exact cause.

Neo.ClientError.Procedure.ProcedureNotFound

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.

Neo.ClientError.Procedure.ProcedureRegistrationFailed

The database failed to register a procedure, refer to the associated error message for details.

Neo.ClientError.Procedure.TypeError

A procedure is using or receiving a value of an invalid type.

Neo.ClientError.Request.Invalid

The client provided an invalid request.

Neo.ClientError.Request.InvalidFormat

The client provided a request that was missing required fields, or had values that are not allowed.

Neo.ClientError.Request.TransactionRequired

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.

Neo.ClientError.Schema.ConstraintAlreadyExists

Unable to perform operation because it would clash with a pre-existing constraint.

Neo.ClientError.Schema.ConstraintNotFound

The request (directly or indirectly) referred to a constraint that does not exist.

Neo.ClientError.Schema.ConstraintValidationFailed

A constraint imposed by the database was violated.

Neo.ClientError.Schema.ConstraintVerificationFailed

Unable to create constraint because data that exists in the database violates it.

Neo.ClientError.Schema.ForbiddenOnConstraintIndex

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.

Neo.ClientError.Schema.IndexAlreadyExists

Unable to perform operation because it would clash with a pre-existing index.

Neo.ClientError.Schema.IndexNotFound

The request (directly or indirectly) referred to an index that does not exist.

Neo.ClientError.Schema.TokenNameError

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.

Neo.ClientError.Security.AuthenticationRateLimit

The client has provided incorrect authentication details too many times in a row.

Neo.ClientError.Security.CredentialsExpired

The credentials have expired and need to be updated.

Neo.ClientError.Security.EncryptionRequired

A TLS encrypted connection is required.

Neo.ClientError.Security.Forbidden

An attempt was made to perform an unauthorized action.

Neo.ClientError.Security.Unauthorized

The client is unauthorized due to authentication failure.

Neo.ClientError.Statement.ArgumentError

The statement is attempting to perform operations using invalid arguments

Neo.ClientError.Statement.ArithmeticError

Invalid use of arithmetic, such as dividing by zero.

Neo.ClientError.Statement.ConstraintVerificationFailed

A constraint imposed by the statement is violated by the data in the database.

Neo.ClientError.Statement.EntityNotFound

The statement is directly referring to an entity that does not exist.

Neo.ClientError.Statement.ExternalResourceFailed

Access to an external resource failed

Neo.ClientError.Statement.LabelNotFound

The statement is referring to a label that does not exist.

Neo.ClientError.Statement.ParameterMissing

The statement is referring to a parameter that was not provided in the request.

Neo.ClientError.Statement.PropertyNotFound

The statement is referring to a property that does not exist.

Neo.ClientError.Statement.SemanticError

The statement is syntactically valid, but expresses something that the database cannot do.

Neo.ClientError.Statement.SyntaxError

The statement contains invalid or unsupported syntax.

Neo.ClientError.Statement.TypeError

The statement is attempting to perform operations on values with types that are not supported by the operation.

Neo.ClientError.Transaction.ForbiddenDueToTransactionType

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.

Neo.ClientError.Transaction.TransactionAccessedConcurrently

There were concurrent requests accessing the same transaction, which is not allowed.

Neo.ClientError.Transaction.TransactionEventHandlerFailed

A transaction event handler threw an exception. The transaction will be rolled back.

Neo.ClientError.Transaction.TransactionHookFailed

Transaction hook failure.

Neo.ClientError.Transaction.TransactionMarkedAsFailed

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

Neo.ClientError.Transaction.TransactionNotFound

The request referred to a transaction that does not exist.

Neo.ClientError.Transaction.TransactionTerminated

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.

Neo.ClientError.Transaction.TransactionValidationFailed

Transaction changes did not pass validation checks

Neo.ClientNotification.Statement.CartesianProductWarning

This query builds a cartesian product between disconnected patterns.

Neo.ClientNotification.Statement.DynamicPropertyWarning

Queries using dynamic properties will use neither index seeks nor index scans for those properties

Neo.ClientNotification.Statement.EagerOperatorWarning

The execution plan for this query contains the Eager operator, which forces all dependent data to be materialized in main memory before proceeding

Neo.ClientNotification.Statement.ExhaustiveShortestPathWarning

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.

Neo.ClientNotification.Statement.FeatureDeprecationWarning

This feature is deprecated and will be removed in future versions.

Neo.ClientNotification.Statement.JoinHintUnfulfillableWarning

The database was unable to plan a hinted join.

Neo.ClientNotification.Statement.JoinHintUnsupportedWarning

Queries with join hints are not supported by the RULE planner.

Neo.ClientNotification.Statement.NoApplicableIndexWarning

Adding a schema index may speed up this query.

Neo.ClientNotification.Statement.PlannerUnsupportedWarning

This query is not supported by the COST planner.

Neo.ClientNotification.Statement.RuntimeUnsupportedWarning

This query is not supported by the compiled runtime.

Neo.ClientNotification.Statement.UnboundedVariableLengthPatternWarning

The provided pattern is unbounded, consider adding an upper limit to the number of node hops.

Neo.ClientNotification.Statement.UnknownLabelWarning

The provided label is not in the database.

Neo.ClientNotification.Statement.UnknownPropertyKeyWarning

The provided property key is not in the database

Neo.ClientNotification.Statement.UnknownRelationshipTypeWarning

The provided relationship type is not in the database.

Neo.DatabaseError.General.IndexCorruptionDetected

The request (directly or indirectly) referred to an index that is in a failed state. The index needs to be dropped and recreated manually.

Neo.DatabaseError.General.SchemaCorruptionDetected

A malformed schema rule was encountered. Please contact your support representative.

Neo.DatabaseError.General.UnknownError

An unknown error occurred.

Neo.DatabaseError.Schema.ConstraintCreationFailed

Creating a requested constraint failed.

Neo.DatabaseError.Schema.ConstraintDropFailed

The database failed to drop a requested constraint.

Neo.DatabaseError.Schema.IndexCreationFailed

Failed to create an index.

Neo.DatabaseError.Schema.IndexDropFailed

The database failed to drop a requested index.

Neo.DatabaseError.Schema.LabelAccessFailed

The request accessed a label that did not exist.

Neo.DatabaseError.Schema.LabelLimitReached

The maximum number of labels supported has been reached, no more labels can be created.

Neo.DatabaseError.Schema.PropertyKeyAccessFailed

The request accessed a property that does not exist.

Neo.DatabaseError.Schema.RelationshipTypeAccessFailed

The request accessed a relationship type that does not exist.

Neo.DatabaseError.Schema.SchemaRuleAccessFailed

The request referred to a schema rule that does not exist.

Neo.DatabaseError.Schema.SchemaRuleDuplicateFound

The request referred to a schema rule that is defined multiple times.

Neo.DatabaseError.Statement.ExecutionFailed

The database was unable to execute the statement.

Neo.DatabaseError.Transaction.TransactionCommitFailed

The database was unable to commit the transaction.

Neo.DatabaseError.Transaction.TransactionLogError

The database was unable to write transaction to log.

Neo.DatabaseError.Transaction.TransactionRollbackFailed

The database was unable to roll back the transaction.

Neo.DatabaseError.Transaction.TransactionStartFailed

The database was unable to start the transaction.

Neo.TransientError.General.DatabaseUnavailable

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.

Neo.TransientError.General.OutOfMemoryError

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.

Neo.TransientError.General.StackOverFlowError

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.

Neo.TransientError.Network.CommunicationError

An unknown network failure occurred, a retry may resolve the issue.

Neo.TransientError.Schema.SchemaModifiedConcurrently

The database schema was modified while this transaction was running, the transaction should be retried.

Neo.TransientError.Security.ModifiedConcurrently

The user was modified concurrently to this request.

Neo.TransientError.Transaction.ConstraintsChanged

Database constraints changed since the start of this transaction

Neo.TransientError.Transaction.DeadlockDetected

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.

Neo.TransientError.Transaction.InstanceStateChanged

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.

Neo.TransientError.Transaction.LockClientStopped

Transaction terminated, no more locks can be acquired.

Neo.TransientError.Transaction.LockSessionExpired

The lock session under which this transaction was started is no longer valid.

Neo.TransientError.Transaction.Outdated

Transaction has seen state which has been invalidated by applied updates while transaction was active. Transaction may succeed if retried.

Neo.TransientError.Transaction.Terminated

Explicitly terminated by the user.