Neo4j 2.0 唯一约束错误“节点已存在”,当它不存在时

2024-05-01

我在 Neo4j 唯一约束方面遇到了一些麻烦,其中 CREATE cypher 语句由于节点已经存在而无法执行。问题是,它不(存在)。此外,昨天使用这些确切数据的精确流程也有效。

我的neo4j版本是ubuntu 12.04.3上的community 2.0.0(release)。这是我目前的情况:

我的限制:

tas@vtas:~$ neo4j-shell
neo4j-sh (?)$ schema
Indexes
  ON :ConsumerUser(tokens) ONLINE
  ON :Id(uuid)             ONLINE (for uniqueness constraint) #relevant
  ON :User(email)          ONLINE (for uniqueness constraint)
  ON :User(username)       ONLINE (for uniqueness constraint) 

Constraints
  ON (user:User) ASSERT user.email IS UNIQUE
  ON (user:User) ASSERT user.username IS UNIQUE
  ON (id:Id) ASSERT id.uuid IS UNIQUE                         #relevant

:Id.uuid 应该是唯一的。

我没有任何数据:

neo4j-sh (?)$ dump
begin
create index on :`ConsumerUser`(`tokens`);
create index on :`Id`(`uuid`);
create index on :`User`(`email`);
create index on :`User`(`username`);
;

(也用密码验证MATCH (n) return n;)

问题查询:

neo4j-sh (?)$ cypher 2.0 CREATE (i:Id{uuid:2});
CypherExecutionException: Node 82 already exists with label Id and property "uuid"=[2]

我尝试过的事情

  • tail -f /var/lib/neo4j/data/log/*.log /var/lib/neo4j/data/graph.db/*.log /var/log/neo4j/*.log对于错误:根本没有记录任何内容
  • 重新启动 neo4j (service neo4j-service restart)
  • 以上tail重新启动时(只有远程有趣的行:[main] INFO org.neo4j.kernel.AutoConfigurator - WARNING! Physical memory(1017MB) is less than assigned JVM memory(4185MB). Continuing but with available JVM memory set to available physical memory)
  • 删除索引(/var/lib/neo4j/data/graph.db/index/ 和 /var/lib/neo4j/data/graph.db/index.db)并重新启动
  • 恢复上述内容,重新启动
  • 搜索SO
  • 搜索 neo4j 的 github issues

到目前为止,没有任何帮助。

我不会尝试的事情

  • Solution here: neo4j constraint deleted node https://stackoverflow.com/questions/19771577/neo4j-constraint-deleted-node because: dropping the constraint in production isn't an option. Also, that was a few versions ago and different use case:
    1. 约束于String[]代替Int
    2. 记录了一些东西
  • 以祈祷可能修复它的方式升级到 2.0.1,而不知道这个问题已被明确解决(我需要知道为什么会发生这种情况)

附加信息

  • I have ulimit -n and ulimit -Hn设置为 40K

  • neo4j-sh (?)$ dbinfo -g Kernel

    {
      "KernelStartTime": "Fri Feb 21 13:53:57 GMT 2014",
      "KernelVersion": "Neo4j - Graph Database Kernel (neo4j-kernel), version: 2.0.0",
      "MBeanQuery": "org.neo4j:instance=kernel#0,name=*",
      "ReadOnly": false,
      "StoreCreationDate": "Fri Feb 14 18:43:27 GMT 2014",
      "StoreDirectory": "/var/lib/neo4j/data/graph.db",
      "StoreId": "a3351846c194229c",
      "StoreLogVersion": 21
    }
    
  • 我见过这个:https://github.com/neo4j/neo4j/issues/1069 https://github.com/neo4j/neo4j/issues/1069但似乎已经解决了。

  • 这是在 Mac OS X 10.6 主机上的 VirtualBox VM 上

我很茫然,是时候提出我的第一个问题了。

简单的答案是“只需擦除所有内容并重新开始”(或者只是重新执行约束),但这实际上是不可接受的(如果在生产中发生这种情况怎么办?)。

有任何想法吗?


您的数据库已损坏。在内部,Neo4j 有一个对此节点的引用,但是您删除了该节点,因此该引用没有指向任何内容。你无法删除它,因为它不存在,你也无法创建它,因为它认为它存在。 (这很可能是由于数据库不正确/意外关闭引起的。请记住确保该机器在生产中具有备用电池)

这就是为什么您始终在生产中备份数据的原因!如果分片损坏,您只需清除它并重新加载数据即可。停机时间最少,并且无需了解它是如何损坏的,仅此而已。如果您没有备份(并且应该有异地备份),那么您需要将数据导出到 CSV,清除数据库,然后重新加载 CSV 数据。通过清除,我的意思是完全擦除旧的数据库目录,并让 Neo4j 创建一个新的。

(不要在没有进行彻底清除的情况下尝试挽救数据库,因为一旦数据库损坏,您就无法知道它的内容或方式受到了损害。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Neo4j 2.0 唯一约束错误“节点已存在”,当它不存在时 的相关文章

  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • 同时运行 Gremlin-Server 和 NEO4J Server

    目前看来我们不能同时运行两者Neo4J服务器 and Gremlin服务器同时 有什么办法可以同时运行两者吗 NEO4J 正在运行 我尝试启动 Gremlin Server 然后出现以下错误 java lang RuntimeExcepti
  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • SQL 约束最小值/最大值?

    有没有办法为数字字段设置 SQL 约束 最小值应为 1234 最大值应为 4523 SQL Server 语法为the check约束 http technet microsoft com en us library ms179491 as
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title
  • 如何在postgresql中编写有关最大行数的约束?

    我认为这是一个很常见的问题 我有一张桌子user id INT 和一张桌子photo id BIGINT owner INT 所有者是一个参考user id 我想向表照片添加一个约束 以防止每个用户将超过 10 张照片输入数据库 写这个的最
  • Neo4j:基于聚合函数过滤节点

    假设我有一个客户节点列表和每个客户下的订单列表 表示为与这些客户节点关联的订单节点 每个订单都有一个与其关联的成本数字属性 我想返回那些平均订单大于阈值的客户 这是一些无法运行的代码 说明了我想要的内容 MATCH n0 Customer
  • Cypher Linked List:如何按索引取消移位和替换

    我正在尝试按照此处的推荐使用 Neo Cypher 创建链表结构 创建时CYPHER存储相同标签的节点关系顺序 https stackoverflow com questions 33263822 cypher store order of
  • F# 静态成员类型约束

    我正在尝试定义一个函数 factorize 它使用类似于 Seq sum 的结构类型约束 需要静态成员 Zero One 和 以便它可以与 int long bigint 等一起使用 似乎无法获得正确的语法 并且无法找到有关该主题的大量资源
  • 使用非负约束进行优化

    考虑以下功能 import numpy as np import scipy optimize as opt import math Periodic indexation def pl list i return list i len l
  • neo4j:CYPHER查询节点的所有属性

    我们正在评估 Neo4J 的未来项目 目前只是尝试学习 Cypher 及其功能 但到目前为止 我认为应该非常简单的一件事却让我无法理解 我希望能够查看任何给定节点的所有属性及其值 在 SQL 中 会是这样的 select from Tabl
  • 无法获取 ConfigBean 中实体的正确 ID - Java EE

    我正在构建一个药房管理应用程序 每个药房都需要一名管理员 约束是这样的 public class Pharmacy implements Serializable Id GeneratedValue strategy GenerationT
  • Cypher Neo4j 无法加载外部资源

    在 Windows 环境中 我尝试加载带有以下语句的 csv 文件 LOAD CSV WITH HEADERS FROM file E Neo4j customers csv AS row 它似乎无法正常工作并返回 无法加载外部资源 文件
  • Neo4j 中合并和创建唯一之间的区别

    我试图找出合并和创建唯一之间的区别 我知道这些功能 合并 如果不存在模式 我可以创建节点 MERGE n name X RETURN n 这将创建具有属性名称的节点 n 空节点 m 和关系 RELATED MERGE n name X RE
  • 为 Apache Spark 示例运行 Cypher (CAPS)

    我知道这是一个广泛的问题 但这会对neo4j不属于某个领域的用户scala编程 我需要使用Apache Spark 项目的 Cypher https github com opencypher cypher for apache spark
  • Neo4J 2.1.3 唯一性约束被违反,这是一个错误吗?

    我们有一个 Neo4J 2 1 3 数据库 并且有一个创建的唯一性约束 如下所示 在 段 SEGMENT 断言上创建约束 segmentId 是唯一的 当我们从浏览器测试这一点时 它可以很好地检测违规行为 例如 CREATE n SEGME
  • 尝试在 android 中更新 sqlite 数据库时出错

    我的数据库正在运行 但我插入的所有记录都是为了检查目的 现在我想删除所有表并创建新表 所以我尝试通过更改版本来更新数据库 我没有对创建表查询进行任何更改 但外键约束失败 代码 787 这是我的DBHelper class private s
  • MongoDB + Neo4J vs OrientDB vs ArangoDB [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正处于 MMO 浏览器游戏的设计阶段 游戏将包括一些实时位置的图块地图 因此每个单元格的图块数据 和通用世界地图 我更喜欢使用 Mongo
  • 如何使用 cypher 2.0 不区分大小写进行搜索?

    如何使用 cypher 2 0 Neo4j 2 1 7 在索引字段上不区分大小写进行搜索 正则表达式不使用索引WHERE a X i b Y 使用 lower 不使用索引WHERE lower a X lower b Y 添加具有小写属性值
  • 不支持的身份验证令牌,仅当禁用身份验证时才允许 schema='none':{ schema='none' } - Neo4j 身份验证错误

    我正在尝试使用 neo4j spark connector 从 Spark 连接到 Neo4j 当我尝试连接到 Neo4j 时遇到身份验证问题org neo4j driver v1 exceptions AuthenticationExce

随机推荐

  • 减少内存分配GCC命令

    今天 在我的计算机科学课上 我被告知我可以调整程序在编译期间可以分配的内存量 使用 GCC Linux 该数量默认设置为最佳模式 这意味着尽可能多 在调试应用程序期间 我可以从这个编译器功能中受益匪浅 因为我需要正确处理分配错误 这在我的
  • ember-cli 在 --environment=product 上失败(未捕获错误:找不到模块)

    我正在使用 ember cli 并且在选择生产环境时遇到问题 具体来说 当我跑步时一切正常ember serve environment development当我运行时我得到一个空白页ember serve environment pro
  • HTML 到 CALS 表?

    我正在检查是否有人拥有可将 HTML 表转换为 CALS 的 XSLT 我发现了很多关于采用其他方式 CALS 到 HTML 的材料 但没有找到来自 HTML 的材料 我认为以前可能有人这样做过 所以我不必重新发明轮子 我并不是在寻找完整的
  • 将 Pandas GroupBy 多索引输出从 Series 转换回 DataFrame

    我有一个数据框 City Name 0 Seattle Alice 1 Seattle Bob 2 Portland Mallory 3 Seattle Mallory 4 Seattle Bob 5 Portland Mallory 我执
  • Dagger2自定义@Qualifier用法

    假设我正在制造一辆汽车 并且我有几个具有不同实现的 Brake beans class Car Inject Car BrakeType value abs Brake frontBrake BrakeType value nonabs B
  • 文本组件中的 ASCII 不可打印字符

    我的情况是 我必须扫描文本字段中的二维码 我必须解析该文本字段附带的不可打印字符 顺便说一句 它总是相同的字符 而这些字符永远不会出现在相同的位置 我尝试获取此代码但没有成功 textfield getText 失败 textfield g
  • 基本编程/算法概念[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我即将 与其他程序员一起 在我的高中
  • 在不同时区之间格式化时间的正确方法是什么?

    我想将 19 19 00 之类的时间格式化为不同的时区 如果我使用SimpleDateFormat它始终考虑纪元的开始 1970 01 01 有些时区在纪元开始时和现在有不同的偏移量 例如 现在与欧洲 基辅的默认偏移量是 UTC 0200
  • Power Query 按组的列总和作为新列

    所以我对电源查询很陌生 我只是浪费了一个多小时来寻找可以在许多其他程序中轻松完成的事情 我只想创建一个新列来总结另一列 例如 检查百分比是否正确 如果不正确则将其归一化 我不想分组并减少表格 我一直在左右搜索 并尝试使用诸如 Group S
  • websocket 订阅服务器不工作。无法到达订阅服务器 graphql-ws ws

    我遵循 相同的文档代码 1 使用websocket graphql创建订阅服务器 但它不适用于graphql ws和ws 当我删除 serverCleanup 定义时 代码有效 并且它也适用于旧的订阅库 subscription trans
  • 定期运行 python 程序作为 firebase 中的后台服务

    刚开始使用 firebase React 来构建一个网站 我网站的设计功能之一是抓取并向用户显示从另一个网站解析的数据 例如股票价格变化 我已经有一个 python 爬虫负责解析数据 但我不知道如何在 firebase 中执行我的服务器的这
  • 循环遍历文件扩展名,excel vba

    我正在使用文件扩展名数组并循环访问工作簿文件夹 该代码正在命名 Sheet 1 name MyName 我注意到尽管 xlsm 不在数组中 它仍在打开并命名工作表 这是代码 任何人都可以看看他们是否遇到同样的问题并且能够解决它 Sub Lo
  • 如何创建设置为太平洋标准时间午夜的 DateTimeOffset

    我正在使用 Quartz NET http quartznet sourceforge net http quartznet sourceforge net 我试图将开始日期设置在午夜 但我在创建这个日期时遇到问题 该应用程序将位于不同时区
  • 如何在自动完成地点中获取城市和州名称 _ Places API

    我正在使用地点自动完成功能从用户中选择城市 其工作正常 但现在我想要城市和州名 我的代码 正在初始化 List
  • 如何在 git 中使用 --work-tree 选项?我不断收到错误消息

    我有一个普通的存储库 其中有一个工作树和一个与工作树位于同一目录中的 git 文件夹 我正在尝试使用以下命令从该位置外部运行 git 命令 git git dir path to repo git work tree path to rep
  • 使用 ajax 渲染部分视图

    我查过这个问题 https stackoverflow com questions 4888521 asp net mvc3 razor views and partialviews with ajax postbacks它解决了我最初的问
  • Java EE 6 中的多租户支持

    我有一个现有的 Java EE 6 应用程序 部署在 Glassfish v 3 1 中 并且希望支持多个租户 我当前在应用程序中使用的技术 API 是 EJB 包括EJB定时器服务 JPA 2 0 EclipseLink JSF 2 0
  • 高级自定义字段 – 具有多个输入的自定义字段类型

    我正在尝试为 ACF 创建一个新的字段类型 其中包含多个输入或存储值数组 原因是我希望为一组输入字段提供一些交互性和自定义布局 我按照这个教程http www advancedcustomfields com resources tutor
  • 在 jQuery 中从 asp.net runat 服务器获取 ID

    我正在尝试使用 ASP NET 在 jQuery 中制作一些东西 但身份证来自runat server 与 HTML 中使用的 id 不同 我曾经用它来从这种情况中获取ID val 但在这种情况下 它不起作用 我不知道为什么 JavaScr
  • Neo4j 2.0 唯一约束错误“节点已存在”,当它不存在时

    我在 Neo4j 唯一约束方面遇到了一些麻烦 其中 CREATE cypher 语句由于节点已经存在而无法执行 问题是 它不 存在 此外 昨天使用这些确切数据的精确流程也有效 我的neo4j版本是ubuntu 12 04 3上的commun