Domanda

Sto cercando di eseguire un grande script che crea una tabella, e quindi inserisce quasi 15.000 righe in esso. La tabella viene creato bene, e poi al 833 INSERT, ottengo un errore:

Error: Query was empty (1065)

Ecco la mia istruzione INSERT 833i (quella che sta venendo a mancare):

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

Non riesco a vedere eventuali errori di sintassi o le differenze tra questa linea, e uno che funziona. Per riferimento, ecco un esempio di un'istruzione INSERT che funziona bene:

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

La parte che mi lascia perplesso è che l'errore suona come qualcosa che sarebbe successo se fossi stato che popolano la nuova riga utilizzando i dati da un altro SELECT, che stava arrivando a mani vuote. Non è questo il caso, però, come le mie istruzioni INSERT sono tutti utilizzando i dati statici.

La mia definizione della tabella si presenta così:

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) 

Sono in esecuzione questo script nel browser GUI MySQL Query.

Potrebbe essere qualcosa a che fare con il numero di righe che sto cercando di inserire? Ho bisogno di impegnarsi periodicamente? C'è qualcosa di semplice che io sono solo sottovalutando?

Grazie!

È stato utile?

Soluzione

Vorrei suggerire che esegue lo SQL dalla riga di comando in una sessione di terminale o SSH. L'interfaccia grafica può essere interferire o limitare la capacità di eseguire il gran numero di inserti.

Altri suggerimenti

Lo scenario più comune imbattersi in questi in un file di script è quando si dispone di un doppio punto e virgola da qualche parte:

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

mi piacerebbe fare una rapida ricerca attraverso lo script e vedere se c'è un ;; in là attorno alla riga 833.

Poiché gli altri inserti stanno lavorando bene e non sembra essere una differenza nella struttura di loro, il mio primo pensiero è che si sta esaurendo di alcune risorse a inserire il numero 833.

Che cosa succede se si fa un commit dopo ogni inserto (il buffer di transazione può essere a corto di spazio)? Funziona allora? In realtà, una prova migliore sarebbe un singolo commit al numero di transazione 800. Se poi si va oltre 833, poi che era il problema.

Se è così, è sufficiente modificare lo script (o lo script che crea lo script id è auto-generata) a commettere ogni 100 o giù di lì inserti (commettendo dopo ogni inserto probabilmente renderà insopportabilmente lento).

Nel caso in cui siete preoccupati per la vostra sintassi di query attuale, sembra che vada bene. Ho creato il vostro tavolo e corse l'inserto e ha funzionato. Quando si dice che si sta eseguendo uno script, ti basta avere un file pieno di SQL prime che si sta eseguendo attraverso? I tempi che ho incontrato l'errore "Empty query" tipo prima di essere stato in cui le persone utilizzano JDBC di tipo roba e hanno la loro logica looping incasinato.

Credo che possiamo tranquillamente dire che non è quel particolare istruzione di inserimento che si è incollato a, è avuto modo di essere qualcosa di server collegato o la sintassi di query in giro che nello script. Le righe devono essere sempre commited automaticamente a meno che non hai riconfigurato qualcosa. Si può provare a eseguire "variabili spettacolo;" dalla riga di comando mysql e aggiungendo che qui. Possiamo quindi dare un'occhiata al vostro setup e vedere se qualcosa sembra strano.

Hai provato a riordinare alcuni dei vostri inserti nel file? Che almeno ci dirà se è in mancanza su una particolare query o un punto particolare nel file. Prova riordino tuoi inserti solo per vedere se non riesce ancora circa 833 o se non riesce in un posto diverso. Se cade nello stesso posto, suona come un ricordo o una cosa del buffer-correlati. Se cambia posti quando lo si sposta, direi che hai un carattere randagio (a;. O forse)., Che in giro da qualche parte come @zombat detto

La speranza che aiuta. Fateci sapere cosa è possibile.

ho incontrato lo stesso errore oggi. A quanto pare, quando stavo usando le istruzioni preparate per i prodotti DOP:. MySql, il tavolo stava avendo dati nulli durante l'interrogazione

ho dovuto correggere tutti i dati mancanti dalla tabella.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top