Mysql
 sql >> база данни >  >> RDS >> Mysql

LOAD DATA LOCAL INFILE не работи от php 5.5, използвайки PDO

Трябва да конфигурирате и двете клиентът и сървърът да разрешат тази команда:

  1. Уверете се, че сървърът позволява LOAD DATA LOCAL INFILE. Редактирайте /etc/my.cnf на MySQL сървъра:

    [server]
    local-infile=1
    
  2. Задайте PDO атрибута във вашия 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 ','");
    

    Това трябва да бъде зададено в аргумента за опции на драйвера към конструктора, а не в последващо извикване на setAttribute() .

    Току-що тествах горния пример с код успешно с PHP 5.5.8 и Percona Server 5.6.15 на CentOS Linux 6.5.

Ако все още имате проблеми, може да имате компилация на MySQL клиента или PDO, която не позволява локален файл. Изискванията са описани в http://dev. mysql.com/doc/refman/5.6/en/load-data-local.html

mysql.allow_local_infile опцията във вашия php.ini не е от значение за 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. MySQL, актуализирайте множество таблици с една заявка

  2. Размер за съхранение на IPv4, IPv6 адреси като низ

  3. PHP форуми - как да се справите с непрочетени дискусии / теми / публикации

  4. Какво е местоположението на mysql клиента .my.cnf в XAMPP за Windows?

  5. MySQL връзката не работи