» MySQL Problem mit LOCAL INFILE Fehler 1148
Aritkel Informationen:
|
Artikel Titel: MySQL Problem mit LOCAL INFILE Fehler 1148 Artikel Datum: 01.01.2007 Druckbare Version |
Artikel Kategorie: Allgemein Autor: PAS |
Erfolgreich getestet unter MySQL 4.X
Ihr wollt eine beispielsweise eine CSV importieren bekommt aber die Meldung:
Dann liegt es daran das ihr die Einstellung local-infile = 0 hat.
Um dies zu ändern startet ihr euer SSH Programm und loggt euch als Root ein und öffnet anschließend die my.cnf wenn ihr nicht wisst wo diese Datei ist, sucht Ihr sie mit:
Nun bearbeitet Ihr die Datei mit "vi" und sucht den Bereich "[mysqld]".
Habt Ihr diesen Bereich gefunden dann sucht nach "local-infile =" falls ihr diese Variable nicht findet,
schreibt Ihr sie nach der "port" Variable hin.
.......
# The MySQL server
[mysqld]
port = 3306
local-infile = 1
......
Die Punkte "......" heißen das es dort noch weiter geht.
Nun Speichert Ihr das ganze ab und startet den MySQL Server neu:
Wenn euer MySQL Server anders neugestartet wird macht es wie Ihr es immer macht ;).
Jetzt loggt ihr euch in der gewünschten Datenbank ein:
Bedeutung:
-u = Username, z.B. web0
-p = Passwort, z.B. test
(ACHTUNG das Passwort steht ohne Leerzeichen nach der Variable -p!!
Also -ptest und NICHT -p test)
-h = Host
--local-infile = Damit die Funktion funktioniert 1 für aktiviert 0 für deaktiviert
Nun sollte bei richtigen Usernamen und Passwort eine ähnliche Meldung wir hier kommen:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is XXX to server version: 4.X.XX
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Nun wählt ihr die Datenbank aus in der sich die Tabellen befinden (Achtung: z.b. web0 hat nur Zugriff auf usr_web0_XX), dazu tippen wir den Befehl in der MySQL Kommandozeile ein:
Als Meldung sollte kommen:
mysql>
Jetzt könnt ihr euer "LOAD DATA LOCAL INFILE" befehl eingeben, achtet drauf das der Befehl mit einem ";" endet!
Hier meine Komplette MySQL Sitzung:
server:/home/ # mysql -u web0 -p123456 -h localhost --local-infile=1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 977 to server version: 4.1.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use usr_web0_1
Database changed
mysql> LOAD DATA LOCAL INFILE '/home/mysql_data.dat' INTO TABLE test FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n';
Query OK, 709678 rows affected (20.63 sec)
Records: 709678 Deleted: 0 Skipped: 0 Warnings: 0
mysql> exit
Bye
Somit sollte es jetzt funktionieren :)
Info: Sie sollten Sie aus Sicherheitsgründen in der my.cnf die Variable "local-infile=" wieder auf 0 setzen.
Wir übernehmen keinerlei Haftung für irgendwelche Schäden, Ausfälle oder sonstigen Geschehnissen.
Alle Angaben sind ohne Gewähr, Sie handeln auf eigenes Risiko!
Alle genannten Soft- und Hardwarebezeichnungen sowie Markennamen sind Eigentum ihrer jeweiligen Inhaber und unterliegen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz.
Alle Rechte vorbehalten