[TroubleShooting]카우치 베이스 N1QL 안될 경우

in #couchbase8 years ago

[ TROUBLE ] temp_bucket 이라는 버킷 생성 후 N1QL로 SELECT Query 실행시 에러메세지 발생.

SELECT * FROM temp_bucket

이미지 1.png

@ 에러메세지 확인

: No index available on keyspace <<temp_bucket>> that matches your query. Use CREATE INDEX or CREATE PRIMARY INDEX to create an index, or check that your expected index is online

: 해당버킷에 유효한인덱스 없으니 CREATE INDEX or CREATE PRIMARY INDEX 로 인덱스를 만들기. 이미 만들었다면 index가 online(=ready) 상태인지 체크해보아라.

[STEP 1 @ CHECK] index가 있는지 확인.

@ index 가 있어야 할 자리로 보이는데 없음.

이미지 2.png

[STEP 2 @ SHOOT] 인덱스 생성하기

CREATE PRIMARY INDEX temp_bucket_primary ON temp_bucket WITH { "defer_build":true }
이미지 3.png

@ 결과가 { "result" :[] } 면 성공

[STEP 3 @ CHECK] 인덱스 진짜 생성되었나 확인
이미지 5.png

@ temp_bucket 생성 되었으나 뭔가 혼자만 다른 status가 created 상태.

: 기다린다고 ready가 되지 않고...

: ready로 만들려면 인덱스를 빌드 해줘야 함.

[STEP 4 @ SHOOT] 인덱스 빌드.

  • cause: index를 ready 상태로 만들기 위함

BUILD INDEX ON temp_bucket (temp_bucket_primary) USING GSI;

※ 밑에 스샷에 QueryEditor 부분에는 ctrl+c, ctrl+v가 2번 된 걸로 찍혔네...
이미지 6.png

@ 결과가 { "result" :[] } 면 성공

[STEP 5 @ CHECK] 인덱스가 빌드 되서 ready되었는지 확인.
이미지 7.png

@ 생성 되어있음

[STEP 6 @ CHECK] N1QL로 SELECT 잘 되는지 확인.

SELECT * FROM temp_bucket

이미지 8.png

[STEP 7 @ CHECK] 데이터 좀 넣고 데이타도 잘 리턴하는 확인.

INSERT INTO temp_bucket (KEY, VALUE) VALUES ( "Test_key", {"date":1513733943, "name":"http://triviabox.tistory.com"} )

INSERT INTO temp_bucket (KEY, VALUE) VALUES ( "Other_key", {"date":15131245670, "name":"Trouble Shoot Finish."} )
이미지 9.png

@ 잘 되는것 확인.

Trouble Shooting Finish!!!!!!!!!!