2010-08-02 4 views
4

감사합니다. 잘 읽고 답변 해 주셔서 감사합니다.SQLite - 정수가 아닌 기본 키를 사용할 수 있습니까?

기존 문제 및 회사 정책으로 인해 SQLite 2.8.17을 사용하고 있으며 몇 가지 varchars를 기본 키로 사용하고 있습니다.

하지만이 "프라 그마 integrity_check"을 실행할 때, 그것은 를보고는와 VARCHAR 기본 키 테이블에"인덱스에있는 항목의 잘못된 #" "인덱스에서 누락 rowid로"하지만 반환 된 결과입니다 좋아. (부하 테스트의 일에 대한)

확장 상수 DB 접근 및 사용은 DB 실패 ( 반환 FAIL 무결성 검사) 및 ( .explain 를 통해) 유일한 설명이 발생할 것으로 보인다 이전과 같은 오류입니다 ("색인에서 행 ID 누락""색인의 항목 수가 잘못되었습니다").

아무도 도와 줄 수 있습니까? 내가하고있는 일이 잘못 되었 니?

감사합니다.

+0

길이와 프라이버시를 허용하면 스키마를 게시 할 수 있습니까? 거기에서 모을 수있는 것이있을 수 있습니다. – MPelletier

답변

0

데이터베이스를 비우는 경우 최소한이 무결성 검사 실패없이 데이터베이스를 다시 구성해야합니다. 그런 다음 액세스 및 사용의 하루를 시도하고 오류가 여전히 있는지 확인하십시오. 그래서, 내가 SQLite2이 VACUUM 후 테이블 이름을 필요로 기억하는 것 같다 있지만 (

sqlite2.exe mydb.db "vacuum;" 

:

데이터베이스를 진공 청소기로 청소, 중 명령 줄 및 유형의 데이터베이스 입력합니다 : VACUUM;를하거나 명령 줄을 사용 그럼에도 불구하고 약간의 실험이 필요할 수도 있습니다. 그럼에도 불구하고 모든 테이블에 영향을 미칩니다.)

+0

아니요, SQLite에는 테이블 이름이 필요하지 않습니다. 매개 변수를 제공하지 않으면 DB 전체가 비워집니다. 진공 청소기로 교체 한 후에도 변화가 없습니다. 오류는 지속됩니다. 처음에는 ** "색인에서 누락 된 rowid"** 및 ** "색인의 잘못된 항목 번호"**가 검사에 의해 진술되고 무결성 검사가 계속 지나면 잠시 후 무결성 검사가 실패하고보고합니다 DB-sick 상태. 그 후 진공 또는 다른 무결성 검사가 내 시스템을 정지시킵니다. "rowid가 누락되었습니다"및 "인덱스에 잘못된 항목이 있습니다"오류가 varchar PK를 발생시키는 원인인지 여부는 알 수 없지만 지금까지 유일한 단서입니다. – JJeff

관련 문제