Mysql
 sql >> Baza danych >  >> RDS >> Mysql

LOAD DATA LOCAL INFILE nie działa z php 5.5 przy użyciu PDO

Musisz skonfigurować oba klient i serwer, aby zezwolić na to polecenie:

  1. Upewnij się, że serwer zezwala na LOAD DATA LOCAL INFILE. Edytuj /etc/my.cnf na serwerze MySQL:

    [server]
    local-infile=1
    
  2. Ustaw atrybut PDO w skrypcie PHP:

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

    Należy to ustawić w argumencie opcji sterownika do konstruktora, a nie w kolejnym wywołaniu setAttribute() .

    Właśnie przetestowałem powyższy przykład kodu z powodzeniem z PHP 5.5.8 i Percona Server 5.6.15 na CentOS Linux 6.5.

Jeśli nadal masz problemy, możesz mieć kompilację klienta MySQL lub PDO, która nie zezwala na plik lokalny. Wymagania są opisane w http://dev. mysql.com/doc/refman/5.6/en/load-data-local.html

mysql.allow_local_infile opcja w twoim php.ini nie dotyczy PDO.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bbPress:Jak znaleźć mapowania załączników do odpowiednich postów

  2. Zapytanie mysql pokazuje wiele tabel z jednej kolumny ID

  3. Jak przechowywać html w bazie danych mysql

  4. mySQL zwraca indeks po wstawieniu

  5. Wybierz rekord tylko wtedy, gdy poprzedni ma niższą wartość