2 Stimmen

Mehrere Sql-Statements (alle ausführen) mit Eclipse Data Tools

Ich verwende den Eclipse SQL Editor (Eclipse Data Tool Platform 1.9.0) in STS 2.7.1 auf der Grundlage von Eclipse 3.7 (Datenbank ist MySQL 5.5).

Wenn ich das SQL Scrapbook (oder eine andere Datei) habe und einige SQL DDL-Anweisungen hineinschreibe, bei denen jede einzelne Anweisung in einer einzigen Zeile steht und mit ; (das ist das konfigurierte Trennzeichen in eclipse) dann kann ich alle Anweisungen zusammen ausführen (Execute All Ctrl+Alt+X). Das funktioniert ohne Probleme, eclipse führt jede Anweisung als eine einzelne Anweisung aus.

Aber wenn ich normale Einfügeanweisungen im gleichen Format habe (jede Zeile/Anweisung endet mit ; ), schlägt die Ausführung aller Anweisungen zusammen fehl. Eclipse scheint zu versuchen, alle Anweisungen in einer einzigen SQL-Anweisung zu verarbeiten. Das schlägt fehl und MySql meldet einen Syntaxfehler.

INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL);
INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);
...

Sie haben einen Fehler in Ihrer SQL-Syntax. Schauen Sie im Handbuch Ihrer MySQL-Server-Version nach, welche Syntax Sie bei 'INSERT INTO' verwenden müssen. folder ( id , businessId , status , title , parent_Folder_fk )" in Zeile 2

Ich kann jede Zeile einzeln ausführen (Zeile auswählen und Auswahl ausführen Alt+X). Ich vermute also, dass es keinen Fehler in den Anweisungen gibt, sondern dass etwas mit der Aufteilung der Anweisungen nicht stimmt.

Wo liegt mein Fehler?

3voto

Frigo Punkte 1664

Ich habe die Ursache des Problems und eine Lösung gefunden.

Execute all trennt insert into-Anweisungen nicht ordnungsgemäß entlang von Begrenzungszeichen (bei anderen Anweisungen funktioniert dies jedoch problemlos), und neuere MySQL-Versionen lassen mehrere Anweisungen in einer Zeile nicht zu, wahrscheinlich um SQL-Injections zu verhindern.

Ich bezweifle, dass ersteres leicht behoben werden kann, aber es gibt eine Konfigurationseigenschaft von MySQL um mehrzeilige SQL-Anweisungen zu ermöglichen. Sie müssen nur "allowMultiQueries=true" zu Data Source Explorer / Eigenschaften einer Datenquelle / Treibereigenschaften / Optional / Zusätzliche Eigenschaften hinzufügen.

0 Stimmen

@Frigo: Bedeutet diese Aussage "Execute all does not separate insert into statements properly along delimiters", dass es einen Fehler in Eclipse Data Tools gibt? Wenn ja, wissen Sie, ob er an Eclipse gemeldet wurde?

1voto

aF. Punkte 62254

Um mehr als eine Zeile zu einer table können Sie dies verwenden command :

INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL), (6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);

OU

Laden Sie mit der plugin wie erklärt HIER .


Um in mehrere Tabellen einzufügen, testen Sie bitte zwei weitere Dinge:

  1. Erstellen einer stored procedure mit dem Vielfachen inserts ;
  2. Erstellen einer stored procedure für jede insert sur un table y execute multiple stored procedures .

0 Stimmen

Ich verstehe nicht, ob Sie die ; über die GO oder nicht.

0 Stimmen

GO wird nur von Microsoft Tools als Alternative zum Standardbegrenzer akzeptiert ;

0 Stimmen

Nein, das Überspringen von Semikolons funktioniert leider nicht. Gleicher Fehler, Eclipse / Zend Studio denkt, es ist eine große SQL-Anweisung anstelle von mehreren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X