php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.02.2010, 23:52  
Neuer Benutzer
 
Registriert seit: 13.02.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
most befindet sich auf einem aufstrebenden Ast
Standard LOAD DATA LOCAL INFILE mit PDO_MYSQLl unter PHP

Hallöchen,

bin dabei einige alte Script von mysql_*-Funktionen auf PDO zu migrieren.
Dabei stolperte ich auch über ein Script mit einem LOAD DATA LOCAL INFILE ... -Statement. Damit dieses Feature unter PDO genutzt werden, muss noch dass Attribute PDO::MYSQL_ATTR_LOCAL_INFILE auf TRUE gesetzt werden. Der entsprechende User unter MySQL verfügt auch über die Berechtigung FILE, so dass serverseitig hier Fehler ausgeschlossen werden können. Beim Setzen des Flags unter pdo tritt kein Fehler auf.

PHP-Code:
$pdo = new PDO('mysql:host=localhost;dbname=testdb''user''pw');
$pdo->setAttribute(PDO::MYSQL_ATTR_LOCAL_INFILETRUE); 
Beim Überprüfen, ob denn das Attribut auch korrekt gesetzt wurde,
PHP-Code:
$pdo->getAttribute(PDO::MYSQL_ATTR_LOCAL_INFILE); 
schmeisst dann PHP allerdings folgenden Fehler:
SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribut

Ohne das Flag funktioniert die Query mit dem LOAD DATA LOCAL leider nicht.

Ich habe unter openSuse 11.0 und 11.1 mit PHP 5.2.11 und PHP 5.3 es versucht. Leider ohne Erfolg. Dabei drängt sich mir nun die Frage auf, ob es etvl. mit der Linux-Dist oder der PHP-Version zu tun hat.
Deswegen wäre es hilfreich zu wissen, ob jemand anders überhaupt schon ein LOAD DATA LOCAL INFILE mit pdo hat zum laufen bringen.

Vielen Dank schonmal im Voraus.
most ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.02.2010, 15:17  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 993
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
ADODB.Recordset.1 (0x80004005)
SQLState: IM001 Native Error Code: 0 [DataDirect][ODBC lib]
Driver does not support this function
Zitat:
This usually means that you simply have ODBC drivers that are out of date. Try updating to the latest ODBC drivers for your data source (this may mean getting 3rd party drivers from the manufacturer), catching up on MDAC from the MDAC Download Page, and possibly switching to OLEDB instead of ODBC (if possible).
__________________
Frank ist offline   Mit Zitat antworten
Alt 14.02.2010, 17:49  
Neuer Benutzer
 
Registriert seit: 13.02.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
most befindet sich auf einem aufstrebenden Ast
Standard

Nun bin ich etwas irritiert. Ich nutze doch PDO_MYSQL und nicht PDO_ODBC.
most ist offline   Mit Zitat antworten
Alt 15.02.2010, 08:26  
thomas_w
Gast
 
Beiträge: n/a
Standard

Ein paar Ideen dazu:

a) Welche PHP-Version setzt Du ein? Da gab es mal einen ähnlichen Bug-Eintrag dazu
PHP Bugs: #47224: MYSQL_ATTR_INIT_COMMAND is no longer available

b) Hast Du in der php.ini die richtige MySQL PDO Extension eingetragen?
Code:
extension=php_pdo_mysql.dll  ! für Windows
;extension=php_pdo_mysql.so ! für *nix
Grüße
Thomas
  Mit Zitat antworten
Alt 15.02.2010, 10:02  
Neuer Benutzer
 
Registriert seit: 13.02.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
most befindet sich auf einem aufstrebenden Ast
Standard

Es wird die richtige Extension verwendet. Sonst könnte ich mit großer Sicherheit auch nicht alle sonstigen Funktionen von PDO nutzen.

Zitat:
Ich habe unter openSuse 11.0 und 11.1 mit PHP 5.2.11 und PHP 5.3 es versucht
most ist offline   Mit Zitat antworten
Alt 15.02.2010, 10:22  
thomas_w
Gast
 
Beiträge: n/a
Standard

Im Magento Forum habe ich noch dies gefunden, also prinzipiell scheint es zu funktionieren. Magento läuft mit dem Zend Framework, allerdings mit vielen Anpassungen. Aber selber probiert habe ich es noch nicht.

Magento - Import Speed / Performance optimization - Magento DataFlow - eCommerce Software for Growth

Grüße
Thomas
  Mit Zitat antworten
Alt 16.02.2010, 11:16  
Neuer Benutzer
 
Registriert seit: 13.02.2010
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
most befindet sich auf einem aufstrebenden Ast
Standard

Um auszuschließen, dass evtl. die Distribution einige ungewollte Änderungen an PDO mit sich bringt, habe ich das ganze jetzt einmal unter Debian Lenny mit PHP 5.2.8 bzw. 5.3.1 mit Suhosin v0.9.29 und MySQL 5.0.51a getestet.

Dort habe ich unter beiden PHP-Versionen (5.2.8 und 5.3.1) geschaut, was mir getAttribute(PDO::MYSQL_ATTR_LOCAL_INFILE) zurückliefert. In beiden Fällen den bereits bekannten Fehler --> 'SQLSTATE[IM001]: Driver does not support this function: driver does not support that attribute

Merkwürdigerweise habe ich unter 5.2.8. einfach mal mein $pdo->exec(LOAD DATA LOCAL INFILE ...) ausgeführt und es funktioniert. Sogar auch OHNE das entsprechende Local-Flag.

Unter PHP 5.3.1 erhalte ich beim Ausführen des gleichen Statements allerdings eine PHP-Warning (unabhängig davon, welchen Error-Modus ich meiner PDO-Verbindung zugewiesen habe)

PDOStatement::execute(): LOAD DATA LOCAL INFILE forbidden

Schaue ich mir mit $stmt->errorCode() an, welchen Fehler das Statement zuletzt generiert hat, dann erhalte ich nur "000000". Also keinen Fehler.

Habe ich evtl. bei der Konfiguration per php.ini etwas übersehen oder vergessen?
most ist offline   Mit Zitat antworten
Alt 16.02.2010, 13:04  
thomas_w
Gast
 
Beiträge: n/a
Standard

Ja, sieht etwas verwirrend aus. Spontan habe ich in PHP Bugs nichts gefunden. Am Besten Du stellt mal das Problem PHP Bugs ein.

Grüße
Thomas
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] php mit LOAD DATA INFILE geht nicht 6setzen PHP Tipps 2009 3 17.12.2009 05:59
OpenID und XAMPP nanatsusaia PHP Tipps 2009 2 20.11.2009 13:21
[MySQL] Existiert Alternative für LOAD DATA INFILE für stored Procedures? TheIfrit Datenbanken 1 14.10.2009 09:59
[Erledigt] LOAD DATA LOCAL INFILE problem !! gustave PHP Tipps 2009 2 29.07.2009 14:55
Größer Textdatei einlesen BlackBroom PHP Tipps 2009 11 27.02.2009 22:40
Fehler by load data infile php script cn-systems PHP-Fortgeschrittene 7 28.11.2008 13:59
load data infile + str_to_date lmueller PHP Tipps 2008 6 25.11.2008 15:17
[Erledigt] LOAD DATA Datenbanken 9 04.12.2005 21:15
CSV datei mit load data local infile Datenbanken 8 01.07.2005 11:23
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
LOAD DATA INFILE vom externen Ort kanti Datenbanken 0 30.08.2004 14:52
Mysql local infile PHP Tipps 2004 2 13.07.2004 10:22
[Erledigt] load data infile - hört bei 127 einfach zu zählen auf? Datenbanken 3 01.07.2004 23:37
load data local Datenbanken 4 23.06.2004 14:28
LOAD DATA INFILE - wo ist der Fehler? Datenbanken 3 14.06.2004 20:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
load data local infile forbidden, load data local infile, \load data local infile forbidden\, pdostatement::execute(): load data local infile forbidden, pdo load data local infile, pdo::query(): load data local infile forbidden, pdo::mysql_attr_local_infile, pdo load data infile, warning: pdo::exec(): load data local infile forbidden, warning: pdostatement::execute() [pdostatement.execute]: load data local infile forbidden, local infile off, pdo load data local infile forbidden, pdo::exec(): load data local infile forbidden, load data local, zend framework php warning: pdo::exec(): load data local infile forbidden in, load data local infile forbidden in, pdo::exec() [pdo.exec]: load data local infile forbidden, php load data local, php load data, warning: pdo::query() [pdo.query]: load data local infile forbidden in

Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum