sql >> データベース >  >> RDS >> Mysql

LOAD DATA LOCAL INFILEは、PDOを使用したphp5.5からは機能しません

    両方を構成する必要があります このコマンドを許可するクライアントとサーバー:

    1. サーバーがLOADDATALOCALINFILEを許可していることを確認してください。 MySQLサーバーで/etc/my.cnfを編集します:

      [server]
      local-infile=1
      
    2. PHPスクリプトでPDO属性を設定します:

      <?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()の呼び出しではなく、コンストラクターのドライバーオプション引数で設定する必要があります。 。

      上記のコード例を、CentOSLinux6.5上のPHP5.5.8およびPerconaServer5.6.15で正常にテストしました。

    それでも問題が解決しない場合は、local-infileを許可しないMySQLクライアントまたはPDOのビルドがある可能性があります。要件は、 http://devで説明されています。 mysql.com/doc/refman/5.6/en/load-data-local.html

    mysql.allow_local_infile php.iniのオプションはPDOとは関係ありません。



    1. SQL Server Express Editionでストアドプロシージャを毎日実行するにはどうすればよいですか?

    2. Fedora12でMySQLリレーショナルデータベースを使用する

    3. MySQLの配列値によるソート順

    4. C#をOracleデータベースに接続するために必要な最小クライアントフットプリントはどれくらいですか?