SQLite "드롭 테이블"오류 메시지 : "SQL 논리 오류 또는 데이터베이스 누락"

StackOverflow https://stackoverflow.com/questions/5394969

  •  28-10-2019
  •  | 
  •  

문제

메모리에서 SQLite 데이터베이스를 실행 중이며 다음 명령을 사용하여 테이블을 삭제하려고합니다. 라코 디스

하지만 SQL 문을 실행하면이 오류가 발생합니다. 라코 디스

"Drop Table"쿼리를 실행하기 전에이 쿼리를 사용하여 데이터베이스에 테이블이 있는지 확인합니다. 그래서 저는 테이블이 존재하고 데이터베이스에 연결되어 있다고 확신합니다. 라코 디스

이 데이터베이스는 파일 데이터베이스에서 메모리로로드되며이 테이블을 삭제하려고 시도하면 데이터베이스가 메모리에서 파일 시스템으로 저장됩니다. 그런 다음 타사 SQLite 유틸리티를 사용하여 SQLite 파일을보고 "테스트"가 있는지 확인할 수 있습니다. 동일한 타사 SQLite 유틸리티를 사용하여 오류없이 "Drop TABLE"SQL 문을 실행할 수 있습니다.

문제없이 테이블을 생성 / 업데이트 할 수 있습니다.

내 질문 :

  • 테이블을 삭제할 때 SQLite에서 메모리 데이터베이스와 파일 데이터베이스간에 차이가 있습니까?
  • 어떻게 든 악센트로 켰을 수있는 SQLite에서 테이블을 삭제하는 기능을 비활성화하는 방법이 있습니까?

    수정 : 잠긴 테이블과 관련이있는 것 같습니다. 아직 조사 중입니다.

도움이 되었습니까?

해결책

버전 3.7.2에서 xerial jbdc 드라이버와 함께 Sqlite를 사용할 때 동일한 문제가 발생했습니다.및 JRE7 먼저 다음과 같이 select 명령을 사용하여 모든 테이블을 나열했습니다. 라코 디스

다음과 같은 테이블을 삭제하려고했습니다. 라코 디스

파일 시스템에 저장된 데이터베이스에서 작업 중이 어서 결과에 영향을 미치지 않는 것 같습니다. 마스터 테이블의 모든 테이블을 먼저 나열하지 않기 위해 IF EXISTS 명령을 사용했지만 어쨌든 전체 테이블 목록이 필요했습니다.

저에게 해결책은 단순히 SELECTDROP의 순서를 변경하는 것이 었습니다.

다른 팁

DROP TABLE 명령에 따옴표가 있어서는 안됩니다.대신 사용 : 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top