문제

테이블을 만드는 큰 스크립트를 실행하려고합니다. 그런 다음 거의 15,000 행을 삽입합니다. 테이블이 잘 만들어진 다음 833 인서트에서 오류가 발생합니다.

Error: Query was empty (1065)

다음은 833 번째 삽입 문 (실패한 것)입니다.

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL);

이 라인의 구문 오류 나 차이점과 작동하는 차이점을 볼 수 없습니다. 참고로, 다음은 잘 작동하는 삽입 문의 예입니다.

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10425, "Frame Shop - Picture/Posters                      - 10425", 2, "Retail", "AZ", 19980801, NULL);

나를 퍼즐로하는 부분은 오류가 다른 선택 문의 데이터를 사용하여 새 행을 채우는 경우 발생할 수있는 것처럼 들린다는 것입니다. 그러나 내 삽입 문이 모두 정적 데이터를 사용하고 있기 때문에 그렇지 않습니다.

내 테이블 정의는 다음과 같습니다.

CREATE TABLE CLASSCODE (
      CLASS_CODE INTEGER NOT NULL, 
      CLASS_CODE_NAME VARCHAR(60) NOT NULL, 
      RATE_GROUP SMALLINT NOT NULL, 
      PROGRAM_NM VARCHAR(20) NOT NULL, 
      ST_CODE CHAR(2), 
      EFF_DT DATE, 
      EXP_DT DATE) 

GUI MySQL 쿼리 브라우저 에서이 스크립트를 실행 중입니다.

삽입하려는 행의 수와 관련이있을 수 있습니까? 주기적으로 커밋해야합니까? 내가 간과하고있는 간단한 것이 있습니까?

감사!

도움이 되었습니까?

해결책

터미널 또는 SSH 세션에서 명령 줄에서 SQL을 실행하는 것이 좋습니다. GUI 인터페이스는 많은 수의 인서트를 실행하는 능력을 방해하거나 제한 할 수 있습니다.

다른 팁

스크립트 파일에서 이들을 실행하는 가장 일반적인 시나리오는 어딘가에 이중 세미콜론이있을 때입니다.

INSERT INTO CLASSCODE 
(CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT)
VALUES
(10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL)
;;

스크립트를 통해 빠른 검색을하고 ;; 833 행 주위에.

다른 인서트가 잘 작동하고 있으며 그 구조에 차이가없는 것처럼 보이기 때문에 첫 번째 생각은 삽입 번호 833에서 일부 리소스가 부족하다는 것입니다.

각 삽입 후 커밋을 수행하면 (트랜잭션 버퍼가 공간이 부족할 수 있음) 어떻게됩니까? 그렇다면 작동합니까? 실제로, 더 나은 테스트는 트랜잭션 번호 800에서 단일 커밋이 될 것입니다. 833을 넘어서면 문제였습니다.

그렇다면 스크립트 (또는 스크립트 ID를 생성하는 스크립트가 자동 생성 된 스크립트)를 수정하여 100 개 정도의 삽입물을 모두 커밋하기 위해 (모든 삽입 후에 커밋하면 불가능하게 느리게 할 수 있음) 간단히 수정하십시오.

실제 쿼리 구문이 걱정 된 경우 괜찮아 보입니다. 나는 당신의 테이블을 만들고 삽입물을 실행했고 작동했습니다. 스크립트를 실행하고 있다고 말하면 실행중인 RAW SQL로 가득 찬 파일이 있습니까? 사람들이 JDBC 유형의 물건을 사용하고 루핑 논리가 엉망이되었을 때 이전에 "빈 쿼리"유형 오류가 발생했습니다.

우리는 당신이 붙여 넣은 특정 삽입문이 아니라고 말할 수 있다고 생각할 수 있습니다. 스크립트의 해당 쿼리 주변에서 서버 관련 또는 구문이되어야합니다. 무언가를 재구성하지 않으면 행을 자동으로 헌신해야합니다. "Show 변수"실행을 시도 할 수 있습니다. MySQL 명령 줄에서 여기에 추가합니다. 그런 다음 설정을보고 이상하게 보이는지 확인할 수 있습니다.

파일에서 삽입물을 다시 주문 해 보셨습니까? 그것은 적어도 특정 쿼리 또는 파일의 특정 지점에서 실패하는지 알려줍니다. 인서트를 재정렬하여 여전히 833에 실패했는지 또는 다른 장소에서 실패하는지 확인하십시오. 같은 장소에 떨어지면 메모리 나 버퍼 관련 것 같습니다. 움직일 때 장소가 바뀌면 @Zombat가 말한 것처럼 길 잃은 캐릭터 (a; 또는 아마도)가 있다고 말할 것입니다.

도움이되기를 바랍니다. 무엇을 할 수 있는지 알려주세요.

오늘도 같은 오류가 발생했습니다. 분명히 PDO : MySQL에 준비된 명령문을 사용할 때 테이블은 쿼리하는 동안 널 데이터를 가지고있었습니다.

테이블에서 누락 된 모든 데이터를 수정해야했습니다.

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