Frage

Ich versuche, ein großes Skript ausgeführt werden soll, die eine Tabelle erstellt, und fügt dann fast 15.000 Zeilen hinein. Die Tabelle in Ordnung geschaffen wird, und dann an dem 833 INSERT, ich erhalte eine Fehlermeldung:

Error: Query was empty (1065)

Hier ist meine 833. INSERT-Anweisung (die, die versagt):

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

Ich kann keinen Syntaxfehler oder Unterschiede zwischen dieser Linie sehen, und eine, die funktioniert. Als Referenz, hier ist ein Beispiel für eine INSERT-Anweisung, die gerade gut funktioniert:

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

Der Teil, der mir ein Rätsel ist, dass die Fehler klingt wie etwas, das passieren würde, wenn ich die neue Zeile bevöl wurden die Daten von einer anderen SELECT-Anweisung, die leer stand bevor. Das ist nicht der Fall, obwohl, wie meine INSERT-Anweisungen sind alle statischen Daten.

Meine Tabellendefinition sieht wie folgt aus:

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) 

Ich verwende dieses Skript in dem GUI MySQL Query Browser.

Könnte es etwas zu tun mit der Anzahl der Zeilen sein Ich versuche zu einfügen? Muss ich regelmäßig begehen? Gibt es etwas einfach, dass ich nur mit Blick auf?

Danke!

War es hilfreich?

Lösung

Ich würde vorschlagen, die SQL von der Befehlszeile in einem Terminal oder SSH-Sitzung ausgeführt wird. Die GUI-Schnittstelle sein kann, zu stören oder zu begrenzen Ihre Fähigkeit, die große Anzahl von Einsätzen ausgeführt werden.

Andere Tipps

Das häufigste Szenario in diesen in einer Skript-Datei auszuführen ist, wenn Sie mit einem Doppel Semikolon irgendwo:

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

Ich würde eine schnelle Suche durch das Skript tun und sehen, ob es ein ;; dort um die Linie 833.

Da die anderen Einsätze arbeiten in Ordnung und es scheint keinen Unterschied in der Struktur von ihnen zu sein, ist mein erster Gedanke ist, dass du läufst aus irgendeiner Ressource bei Einsatz Nummer 833.

Was passiert, wenn Sie ein nach jedem Einsatz begehen tun (Ihr Transaktionspuffer kann Platz laufen aus)? Ist es dann funktionieren? Eigentlich ein besserer Test wäre eine einzige bei Transaktionsnummer begehen 800. Wenn Sie dann über 833 bekommen, dann ist das Ihr Problem war.

Wenn ja, ändern Sie einfach Ihr Skript (oder das Skript, das Skript IDs automatisch generiert es schafft) zu begehen, alle 100 oder so Einsätze (begehen nach jedem Einsatz wird wahrscheinlich machen es unerträglich langsam).

Falls Sie über Ihre aktuelle Abfragesyntax besorgt sind, scheint es in Ordnung. Ich habe den Tisch und lief um den Einsatz und es funktionierte. Wenn Sie sagen, Sie sind ein Skript ausgeführt wird, müssen Sie nur eine Datei voll von rohen SQL, dass Sie laufen durch? Die Zeiten, ich habe laufen in die „Empty Query“ Typenfehler vor gewesen, wenn die Leute JDBC-Typ Material verwenden und ihre Looping Logik vermasselt.

ich denke, wir sicher sagen kann, es ist nicht, dass bestimmte Insert-Anweisung, dass Sie klebte in, es hat etwas Server verwandt oder Syntax um diese Abfrage im Skript zu sein. Die Zeilen sollten automatisch verpflichtet werden, immer wenn Sie etwas neu konfiguriert haben. Sie können versuchen, laufen „show Variablen;“ von der MySQL-Kommandozeile und das hier angehängt wird. Wir können dann einen Blick auf das Setup und sehen, ob etwas seltsam aussieht.

Haben Sie versucht, einige Ihrer Einsätze in der Datei neu bestellen? Das wird zumindest uns sagen, wenn es auf einer bestimmten Abfrage oder eine bestimmte Stelle in der Datei fehlschlägt. Versuchen Sie, Ihre Einsätze Nachbestellung nur um zu sehen, ob es nicht noch etwa 833 in oder wenn es an einem anderen Ort ausfällt. Wenn es an der gleichen Stelle fällt, es klingt wie ein Speicher oder Puffer bezogene Sache. Wenn es Orte ändert sich, wenn Sie es bewegen, ich würde sagen, dass Sie ein Streu Charakter haben (a;. Oder vielleicht). Rumliegen irgendwo wie @zombat sagte

Ich hoffe, das hilft. Lassen Sie uns wissen, was Sie können.

begegnete ich den gleichen Fehler heute. Offenbar, wenn ich vorbereitete Anweisungen für PDO verwendet wurde: MySql, war der Tisch Null-Daten, die während der Abfrage

.

Ich hatte alle die fehlenden Daten aus der Tabelle zu korrigieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top