U moet beide . configureren de client en de server om deze opdracht toe te staan:
-
Zorg ervoor dat de server LOAD DATA LOCAL INFILE toestaat. Bewerk /etc/my.cnf op de MySQL-server:
[server] local-infile=1
-
Stel het PDO-kenmerk in uw PHP-script in:
<?php $dsn = "mysql:host=localhost;dbname=test"; $user = "root"; $password = "root"; $pdo = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_LOCAL_INFILE=>1)); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec("LOAD DATA LOCAL INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ','");
Dit moet worden ingesteld in het argument driver options aan de constructor, niet in een volgende aanroep van
setAttribute()
.Ik heb zojuist het bovenstaande codevoorbeeld met succes getest met PHP 5.5.8 en Percona Server 5.6.15 op CentOS Linux 6.5.
Als je nog steeds problemen hebt, heb je misschien een build van de MySQL-client of PDO die lokale infile niet toestaat. De vereisten worden beschreven in http://dev. mysql.com/doc/refman/5.6/en/load-data-local.html
Het mysql.allow_local_infile
optie in uw php.ini is niet relevant voor PDO.