2012-05-24 4 views
10

Ich habe ein PHP-Skript, das MySQL LOAD DATA INFILE ruft, um Daten aus CSV-Dateien zu laden. Doch auf dem Produktionsserver, landete ich mit folgendem Fehler auf:LOAD DATA LOCAL INFILE gibt den Fehler Der verwendete Befehl ist nicht erlaubt mit dieser MySQL-Version

Access denied for user ... (using password: yes)

Als schnelle Abhilfe, änderte ich den Befehl LOAD DATA LOCAL INFILE, die funktionierte. Allerdings gelang es der gleiche Befehl auf Client-Server mit dieser Nachricht:

The used command is not allowed with this MySQL version

Ich nehme an, das hat etwas mit dem Server-Variable zu tun: local_infile = off wie here.

Bitte schlagen Sie eine Problemumgehung vor, die die Servereinstellungen nicht ändert. Beachten Sie, dass das auf demselben Server installierte phpMyAdmin-Dienstprogramm anscheinend CSV-Dateien akzeptiert, obwohl ich nicht sicher bin, ob es es verwendet LOAD DATA (LOCAL) INFILE.

+0

es ist nicht der Befehl ist die Erlaubnis des Benutzers, die Sie verwenden ,. – jcho360

+0

Derselbe Benutzer kann 'INSERT'-Abfragen ausführen, aber nicht' LOAD DATA INFILE' (Zugriff verweigert) oder 'LOAD DATA LOCAL INFILE' (verwendeter Befehl nicht erlaubt). –

Antwort

39

lief in das gleiche Problem wie Wurzel und warf mich für einen Moment

könnte ein Problem mit dem Server-Einstellungen mit der Kompilierung

gesetzt sein Login zu testen mit dem gleichen Benutzer zu trösten und versuchen Ihre Ladedaten Befehl

, wenn Sie den gleichen Fehler, versuchen Sie Konsole schließen und

mysql -u USER -p --local-infile=1 DATABASE 
läuft

nun versuchen, Lastdaten Befehl erneut ausgeführt

, wenn es Sie arbeitet dann gehst mit Konfigurationsoption müssen neu starten mysqld mit Befehlszeilenoption oder neu installieren

Referenzen (Referenzen sind für 5.0 aber gearbeitet mich mit 5.5):

http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html

http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_local-infile

+3

"mysql -u USER -p --local-infile = 1 DATABASE" .Dieser Befehl hat alles getan. Vielen Dank. –

+0

Ihre Begrüßung, obwohl es für andere sauberer zu danken ist dank der – Alvin

+0

sehr nützliche Antwort, lief in das Problem selbst – Rickyfox

0

werfen Sie einen Blick auf diese Liste, Sie können sie separat hinzufügen, IE. Aktualisieren Sie können einfügen, aber nicht, oder Sie können löschen, aber nicht wählen, etc ...

ALL [PRIVILEGES] Grant all privileges at specified access level except GRANT OPTION 
ALTER Enable use of ALTER TABLE 
ALTER ROUTINE Enable stored routines to be altered or dropped 
CREATE Enable database and table creation 
CREATE ROUTINE Enable stored routine creation 
CREATE TEMPORARY TABLES  Enable use of CREATE TEMPORARY TABLE 
CREATE USER  Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES 
CREATE VIEW  Enable views to be created or altered 
DELETE Enable use of DELETE 
DROP Enable databases, tables, and views to be dropped 
EVENT Enable use of events for the Event Scheduler 
EXECUTE  Enable the user to execute stored routines 
FILE Enable the user to cause the server to read or write files 
GRANT OPTION Enable privileges to be granted to or removed from other accounts 
INDEX Enable indexes to be created or dropped 
INSERT Enable use of INSERT 
LOCK TABLES  Enable use of LOCK TABLES on tables for which you have the SELECT privilege 
PROCESS  Enable the user to see all processes with SHOW PROCESSLIST 
REFERENCES Not implemented 
RELOAD Enable use of FLUSH operations 
REPLICATION CLIENT Enable the user to ask where master or slave servers are 
REPLICATION SLAVE Enable replication slaves to read binary log events from the master 
SELECT Enable use of SELECT 
SHOW DATABASES Enable SHOW DATABASES to show all databases 
SHOW VIEW Enable use of SHOW CREATE VIEW 
SHUTDOWN Enable use of mysqladmin shutdown 
SUPER Enable use of other administrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command 
TRIGGER  Enable trigger operations 
UPDATE Enable use of UPDATE 
USAGE Synonym for “no privileges” 

Ich glaube, Sie haben permision auswählen, löschen, einfügen, aktualisieren, aber keine andere Sachen zu tun,

diesen Befehl verwenden:

SHOW GRANTS 

er Ihnen zeigen, was Sie in der Lage sind, in meinem Fall zu.

jcho360> show grants; 
+-------------------------------------------------------+ 
| Grants for [email protected]       | 
+-------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'jbolivar'@'localhost' | 
+-------------------------------------------------------+ 
1 row in set (0.00 sec) 
Verwandte Themen