• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved]MySQL (Stapelbetrieb)

OsunSeyi

Hacker
Hi !
Wie kann es sein, daß einundderselbe Befehl, von MySQL aus einer Datei ausgelesen eine Fehlermeldung verursacht:
Code:
mysql>  \. /home/tom/MYSQL/bn2
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Veranstalter' at line 1
...und aber einwandfrei funktioniert, wenn ich selbige Datei mit cat auslese & in den MySQL-Prompt kopiere ?
Gruß, Tom
 

homer65

Hacker
Um die SQL Befehle in einer Datei (z.B. /home/ddl.txt) auszuführen gibt man folgenden Befehl an:
mysql -uUser -pPasswort -hHost < /home/ddl.txt
 
OP
OsunSeyi

OsunSeyi

Hacker
Hi homer65 !
Zitat:
"Sie können auch Skripten an der mysql-Eingabeaufforderung verwenden. Hierzu dient der Befehl source bzw. \.:
Code:
mysql> source filename;
mysql> \. filename;"
Die von Dir vorgeschlagene Variante liefert auch die gleiche Fehlermeldung (es sei ein Fehler in der Syntax der verwendeten Datei)!
Wie gesagt, selbige Datei mit cat ausgelesen und an den Promt kopiert funktioniert tadellos...Die Syntax, mit der ich die Datei einlese, hat auch in anderem Zusammenhang bereits funktioniert.
Ich vermute, das MySQL einen anderen Zeichensatz beim Stapelbetrieb benutzt als am Promt :? :?:
 

homer65

Hacker
Joh, gebe dir Recht.
Unter:
http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html
sind einige Kommentare, die sich damit beschäftigen, wie der Zeichensatz für Batch ausgewählt wird. Unklar ist mir allerdings auch noch was bei deiner "cat" Methode passiert.
 
OP
OsunSeyi

OsunSeyi

Hacker
Hi
Hab' was herausbekommen...:eek:
Es ist die Art, wie ich Zeilen auskommentiere :
Code:
#      SELECT  NAME 		 ,ID_ALT, ID		 FROM Veranstalter ;
--	SELECT  BEW 	 	   ,ID_ALT, ID		   FROM Veranstalter ;
wird bemäkelt.
Code:
/*	SELECT  ADRESSE 	 ,ID_ALT, ID	      FROM Veranstalter ;
*/
wird akzepziert !
Also. die Datei sieht natürlich so aus :
Code:
#	SELECT  NAME 		     ,ID_ALT, ID		 FROM Veranstalter ;
#	SELECT  BEW 		      ,ID_ALT, ID		   FROM Veranstalter ;
	  SELECT  ADRESSE 	 ,ID_ALT, ID		      FROM Veranstalter ;
#	SELECT  BESCHREIBUNG     ,ID_ALT, ID	     FROM Veranstalter ;
Normal sollten alle drei Varianten klappen...
Der Zeilenumbruch (relevant für die ersten beiden Methoden) kann's
nicht sein, weil auch Mehrzeiler dabei sind (die gehen).
Versteh´ das einer...
Gruß, Tom
MySQL5.1/Kommentare
PS.: Es sind nicht die vor der auszuführenden Zeile stehenden Kommentare, sondern die nachfolgenden. Dachte also, es sei der Zeilenumbruch... aber mit MS-like System klappt´s auch nit besser.
 
OP
OsunSeyi

OsunSeyi

Hacker
Wieder mal eher etwas peinlich :oops:

Ein nicht zur kenntnis genommener Zeilenumbruch, ergo ein nicht auskommentiertes Befehlsfragment:
Was ich daraus lerne, ist daß man nicht penibel genug sein kann...

Gruß, Tom
 
Oben