2017-04-12 7 views
0

쿼리를 통해 존재하는 제약 조건 만 삭제할 수 있습니까? 자바 스크립트 용 볼트 드라이버를 사용하고 있습니다. 'Neo4j 드롭 컨 스트레인 트가 존재할 경우

Unable to drop CONSTRAINT ... No such constraint CONSTRAINT 

그러나 나는 돈 :

나는 처음에 그냥 오류를 잡을 겁니다 생각했지만, 내가 오류가 충분히 명확하지 않습니다 : 로그에서

{"code":"Neo.DatabaseError.Schema.ConstraintDropFailed"} 
{ Error: An unexpected failure occurred, see details in the database logs, reference number .... } 

나는 참으로 얻을 로그를 프로그래밍 방식으로 열고 구문 분석하려고합니다.

제약 조건이있는 경우에만 제약 조건을 삭제할 수 있습니까? 나는 아무 것도 발견하지 못했습니다.

내가 생각할 수있는 유일한 것은 제약 조건 (더 명확한 오류를 반환 함)과 충돌하는 두 개의 노드를 먼저 만들려고 시도하는 것이지만 뭔가 더 깨끗한 것을 선호합니다.

+0

새 제약 조건을 삭제하고 있습니까? –

답변

0

원하는 인덱스와 제약 조건을 모두 알고있는 경우 apoc 절차 apoc.schema.assert을 사용하면 해당 인덱스가 존재하고 다른 모든 기존 인덱스와 제약 조건이 삭제됩니다.

이 절차를 사용하는 방법의 예는 doc section의 일부입니다. 다음은 절차 및 결과에 대한 호출을 보여주는 스 니펫입니다.

Let’s create some indexes and constraints, note that other indexes and constraints will be dropped by this. 

CALL apoc.schema.assert(
    {Track:['title','length']}, 
    {Artist:['name'],Track:['id'],Genre:['name']}); 

╒════════════╤═══════╤══════╤═══════╕ 
│label  │key │unique│action │ 
╞════════════╪═══════╪══════╪═══════╡ 
│Track  │title │false │CREATED│ 
├────────────┼───────┼──────┼───────┤ 
│Track  │length │false │CREATED│ 
├────────────┼───────┼──────┼───────┤ 
│Artist  │name │true │CREATED│ 
├────────────┼───────┼──────┼───────┤ 
│Genre  │name │true │CREATED│ 
├────────────┼───────┼──────┼───────┤ 
│Track  │id  │true │CREATED│ 
└────────────┴───────┴──────┴───────┘