sql >> Database teknologi >  >> RDS >> Mysql

LOAD DATA LOCAL INFILE virker ikke fra php 5.5 ved brug af PDO

Du skal konfigurere begge klienten og serveren for at tillade denne kommando:

  1. Sørg for, at serveren tillader LOAD DATA LOCAL INFILE. Rediger /etc/my.cnf på MySQL-serveren:

    [server]
    local-infile=1
    
  2. Indstil PDO-attributten i dit PHP-script:

    <?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 ','");
    

    Dette skal indstilles i driveroptions-argumentet til konstruktøren, ikke i et efterfølgende kald til setAttribute() .

    Jeg har lige testet ovenstående kodeeksempel med succes med PHP 5.5.8 og Percona Server 5.6.15 på CentOS Linux 6.5.

Hvis du stadig har problemer, har du muligvis en build af MySQL-klienten eller PDO'en, der ikke tillader lokal-infil. Kravene er beskrevet i http://dev. mysql.com/doc/refman/5.6/en/load-data-local.html

mysql.allow_local_infile mulighed i din php.ini er ikke relevant for PDO.



  1. WEEKDAY() vs DAYOFWEEK() i MariaDB:Hvad er forskellen?

  2. Hvilke ressourcer findes der til justering af databasens ydeevne?

  3. Hvad er den korrekte syntaks for en Regex find-and-replace ved hjælp af REGEXP_REPLACE i MariaDB?

  4. Importer CSV-fil til SQL Server