Neo4j 重置节点 ID 计数器
Neo4j Reset node Id counter
我正在执行密码查询以在 java 中创建新节点。
CREATE (n:user{name: 'ray', email: '@something.com'}) RETURN n
try (Transaction tx = server.graphDb1.beginTx())
{
try
{
Result result = server.graphDb1.execute(readString);
while (result.hasNext())
{
我遇到的问题是,执行后
执行三次将导致
n: Node[0]; n: Node[1]; n: Node[2]
如果交易成功,一切都很好。如果交易失败,节点将不会被保存。
但是节点 ID 是保留的。
接下来的三个请求将导致:
n: Node[3]; n: Node[4]; n: Node[5];
所以我有 6 个节点 ID 但只有 3 个节点。有没有办法在交易失败后重置计数器?
节点 ID(及其分配机制)是完全内部的东西,您作为数据库用户根本不应该关心。唯一要记住的是不要将节点 ID 存储在第三方系统中的任何位置。
根据 Neo4j 版本,未使用的 ID 将在重启后重新使用 - 但不要依赖此实现细节。
我正在执行密码查询以在 java 中创建新节点。
CREATE (n:user{name: 'ray', email: '@something.com'}) RETURN n
try (Transaction tx = server.graphDb1.beginTx())
{
try
{
Result result = server.graphDb1.execute(readString);
while (result.hasNext())
{
我遇到的问题是,执行后
执行三次将导致
n: Node[0]; n: Node[1]; n: Node[2]
如果交易成功,一切都很好。如果交易失败,节点将不会被保存。 但是节点 ID 是保留的。
接下来的三个请求将导致:
n: Node[3]; n: Node[4]; n: Node[5];
所以我有 6 个节点 ID 但只有 3 个节点。有没有办法在交易失败后重置计数器?
节点 ID(及其分配机制)是完全内部的东西,您作为数据库用户根本不应该关心。唯一要记住的是不要将节点 ID 存储在第三方系统中的任何位置。
根据 Neo4j 版本,未使用的 ID 将在重启后重新使用 - 但不要依赖此实现细节。