Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

LOAD DATA LOCAL INFILE không hoạt động từ php 5.5 bằng cách sử dụng PDO

Bạn cần định cấu hình cả hai máy khách và máy chủ để cho phép lệnh này:

  1. Đảm bảo máy chủ cho phép TẢI THÔNG TIN ĐỊA PHƯƠNG DỮ LIỆU. Chỉnh sửa /etc/my.cnf trên máy chủ MySQL:

    [server]
    local-infile=1
    
  2. Đặt thuộc tính PDO trong tập lệnh PHP của bạn:

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

    Điều này cần được đặt trong đối số tùy chọn trình điều khiển cho hàm tạo, không phải trong lệnh gọi tiếp theo tới setAttribute() .

    Tôi vừa thử nghiệm thành công ví dụ mã trên với PHP 5.5.8 và Percona Server 5.6.15 trên CentOS Linux 6.5.

Nếu bạn vẫn gặp sự cố, bạn có thể có một bản dựng của máy khách MySQL hoặc PDO không cho phép local-infile. Các yêu cầu được mô tả trong http:// dev. mysql.com/doc/refman/5.6/en/load-data-local.html

mysql.allow_local_infile tùy chọn trong php.ini của bạn không liên quan đến 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. Bộ nhị phân MySQL so với bộ ký tự char

  2. MySQL - Cập nhật nhiều giá trị và Ở ĐÂU TRONG

  3. mysqli - Tôi có thực sự cần làm $ result-> close (); &$ mysqli-> close ();?

  4. Ghi đè các giá trị được lập chỉ mục duy nhất

  5. LazyInitializationException cố gắng lấy phiên bản khởi tạo lười biếng