Pergunta

Eu estou tentando executar um grande script que cria uma tabela, e em seguida, insere quase 15.000 linhas para ele. A tabela é criado muito bem, e depois para o 833 INSERT, eu recebo um erro:

Error: Query was empty (1065)

Aqui está a minha declaração 833 INSERIR (aquele que está a falhar):

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);

Eu não posso ver qualquer erro de sintaxe ou diferenças entre esta linha, e um que funcione. Para referência, aqui está um exemplo de uma instrução INSERT que funciona muito bem:

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);

A parte que me intriga é que os sons de erro como algo que iria acontecer se eu estava preenchendo a nova linha utilizando dados de outra instrução SELECT, que foi chegando vazio. Esse não é o caso, porém, como as minhas instruções INSERT estão todos usando dados estáticos.

As minhas tabela de definição esta aparência:

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) 

Estou executando esse script no navegador GUI MySQL Query.

Poderia ser algo a ver com o número de linhas que eu estou tentando inserir? Eu preciso cometer periodicamente? Existe simples algo que eu apenas estou com vista?

Obrigado!

Foi útil?

Solução

Eu sugeriria executando o SQL a partir da linha de comando em uma sessão de terminal ou SSH. A interface gráfica pode ser interferir ou limitar a sua capacidade de executar o grande número de inserções.

Outras dicas

O cenário mais comum se deparar com estes em um arquivo de script é quando você tem uma dupla em algum ponto e vírgula:

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)
;;

Eu faria uma busca rápida através do script e ver se há uma ;; lá em torno da linha 833.

Uma vez que as outras inserções estão trabalhando bem e não parece ser uma diferença na estrutura deles, meu primeiro pensamento é que você está a esgotar-se de algum recurso na inserção número 833.

O que acontece se você fizer um commit depois de cada inserção (o buffer de transação pode ser a falta de espaço)? Será que funciona então? Na verdade, um teste melhor seria uma única cometer pelo número de transação 800. Se você, em seguida, ir além 833, em seguida, que era o seu problema.

Se assim for, simplesmente modificar seu script (ou o script que cria o seu ID de roteiro a sua auto-gerado) para cometer todos os 100 ou mais inserções (cometendo depois de cada inserção, provavelmente, irá torná-lo insuportavelmente lento).

Caso você esteja preocupado com sua sintaxe consulta real, parece bem. Eu criei a sua mesa e correu a inserção e funcionou. Quando você diz que está executando um script, você só tem um arquivo cheio de SQL cru que você está correndo através? As vezes eu tenho que correr para o erro tipo "Empty Query" antes de ter sido quando as pessoas estão usando JDBC tipo coisas e têm a sua lógica looping desarrumada.

Eu acho que podemos dizer com segurança que não é tão especial instrução de inserção que você colou no, ele tem que ser servidor de algo relacionado ou sintaxe em torno dessa consulta no script. As linhas devem estar sendo comprometida automaticamente, a menos que você tenha reconfigurado algo. Você pode tentar executar "Mostrar variáveis"; na linha de comando mysql e anexando isso aqui. Podemos, então, dar uma olhada em sua configuração e ver se alguma coisa parece estranho.

Você já tentou re-encomendar algumas de suas inserções no arquivo? Que, pelo menos nos dizer se ele está falhando em uma consulta específica ou um local específico no arquivo. Tente reorganizar suas inserções só para ver se ele ainda falhar sobre 833 ou se ele falhar em um lugar diferente. Se ele cai no mesmo lugar, isso soa como uma memória ou coisa tampão-relacionado. Se ele muda lugares quando você movê-lo, eu diria que você tem um personagem perdido (a;. Ou talvez). Que em algum lugar como @zombat disse

Espero que ajude. Deixe-nos saber o que você puder.

Eu encontrei o mesmo erro hoje. Aparentemente, quando eu estava usando instruções preparadas para DOP: MySql, a mesa foi ter dados nulos ao consultar

.

Eu tive que corrigir todos os dados em falta da tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top