• <i id='pDmN1'><tr id='pDmN1'><dt id='pDmN1'><q id='pDmN1'><span id='pDmN1'><b id='pDmN1'><form id='pDmN1'><ins id='pDmN1'></ins><ul id='pDmN1'></ul><sub id='pDmN1'></sub></form><legend id='pDmN1'></legend><bdo id='pDmN1'><pre id='pDmN1'><center id='pDmN1'></center></pre></bdo></b><th id='pDmN1'></th></span></q></dt></tr></i><div id='pDmN1'><tfoot id='pDmN1'></tfoot><dl id='pDmN1'><fieldset id='pDmN1'></fieldset></dl></div>

      <bdo id='pDmN1'></bdo><ul id='pDmN1'></ul>
    <tfoot id='pDmN1'></tfoot>

    <small id='pDmN1'></small><noframes id='pDmN1'>

      1. <legend id='pDmN1'><style id='pDmN1'><dir id='pDmN1'><q id='pDmN1'></q></dir></style></legend>
      2. 即使我可以从 cli 客户端使用,为什么我不能将

        时间:2023-10-04

            <tbody id='3XmPq'></tbody>

        • <small id='3XmPq'></small><noframes id='3XmPq'>

          • <bdo id='3XmPq'></bdo><ul id='3XmPq'></ul>

          • <tfoot id='3XmPq'></tfoot>

              <i id='3XmPq'><tr id='3XmPq'><dt id='3XmPq'><q id='3XmPq'><span id='3XmPq'><b id='3XmPq'><form id='3XmPq'><ins id='3XmPq'></ins><ul id='3XmPq'></ul><sub id='3XmPq'></sub></form><legend id='3XmPq'></legend><bdo id='3XmPq'><pre id='3XmPq'><center id='3XmPq'></center></pre></bdo></b><th id='3XmPq'></th></span></q></dt></tr></i><div id='3XmPq'><tfoot id='3XmPq'></tfoot><dl id='3XmPq'><fieldset id='3XmPq'></fieldset></dl></div>
            • <legend id='3XmPq'><style id='3XmPq'><dir id='3XmPq'><q id='3XmPq'></q></dir></style></legend>

                  本文介绍了即使我可以从 cli 客户端使用,为什么我不能将 LOAD DATA LOCAL 与 PDO 一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我最近将我的 Ubuntu 10.04 开发服务器升级到 14.04.它实际上是全新安装.PHP 版本是 5.4.15,现在是 PHP 5.5.9.MySQL 从 5.1.67 到 5.5.37.

                  I recently upgraded my Ubuntu 10.04 dev server to 14.04. It is actually a fresh install. PHP version was 5.4.15, and is now PHP 5.5.9. MySQL went from 5.1.67 to 5.5.37.

                  我正在尝试在新服务器上加载本地数据文件.它可以使用本地 mysql cli 客户端运行命令.使用 PDO 执行时不起作用:

                  I am trying to LOAD LOCAL DATA INFILE on a new server. It works running the command using the local mysql cli client. It does not work when executing using PDO:

                  PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version' in /home/ubuntu/mysqltest.php:21
                  Stack trace:
                  #0 /home/ubuntu/mysqltest.php(21): PDO->exec('LOAD DATA LOCAL...')
                  #1 {main}
                    thrown in /home/ubuntu/mysqltest.php on line 21
                  

                  产生错误的代码:

                  ini_set('mysql.allow_local_infile', 1);
                  echo "mysql.allow_local_infile: ".ini_get("mysql.allow_local_infile").PHP_EOL;
                  
                  $options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1);
                  $db = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPassword, $options);
                  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                  
                  $db->exec("CREATE TEMPORARY TABLE tmp_table ( id INT(4), col1 varchar(128) ) ENGINE MYISAM");
                  
                  $loadSQL = <<<'EOT'
                  LOAD DATA LOCAL INFILE '/tmp/test.csv' INTO TABLE `tmp_table` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '
                  ' IGNORE 1 LINES (id, col1)
                  EOT;
                  
                  $db->exec($loadSQL);
                  

                  目前为解决问题采取的步骤:

                  Steps taken so far to address problem:

                  • 我已将 local-infile = 1 添加到/etc/mysql/my.cnf 的 [mysql] 和 [mysqld] 部分
                  • 我已经检查过 mysql.allow_local_infile = On 在/etc/php5/cli/php.ini 中.
                  • DB 用户是 root 用户,因此拥有所有权限.
                  • /tmp/test.csv 确实存在并且用户对其拥有完全权限.

                  推荐答案

                  这是 php 中的一个错误.请参阅https://bugs.php.net/bug.php?id=68226 用于解释和解决方法.

                  This is a bug in php. Please see https://bugs.php.net/bug.php?id=68226 for explanation and workaround.

                  这篇关于即使我可以从 cli 客户端使用,为什么我不能将 LOAD DATA LOCAL 与 PDO 一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:仅在需要时自动连接到 PDO 下一篇:带有 MySQL 插入 PDO 请求的错误 HY093

                  相关文章

                  最新文章

                  <small id='TRUNC'></small><noframes id='TRUNC'>

                  <legend id='TRUNC'><style id='TRUNC'><dir id='TRUNC'><q id='TRUNC'></q></dir></style></legend>

                    <i id='TRUNC'><tr id='TRUNC'><dt id='TRUNC'><q id='TRUNC'><span id='TRUNC'><b id='TRUNC'><form id='TRUNC'><ins id='TRUNC'></ins><ul id='TRUNC'></ul><sub id='TRUNC'></sub></form><legend id='TRUNC'></legend><bdo id='TRUNC'><pre id='TRUNC'><center id='TRUNC'></center></pre></bdo></b><th id='TRUNC'></th></span></q></dt></tr></i><div id='TRUNC'><tfoot id='TRUNC'></tfoot><dl id='TRUNC'><fieldset id='TRUNC'></fieldset></dl></div>
                      <bdo id='TRUNC'></bdo><ul id='TRUNC'></ul>
                    <tfoot id='TRUNC'></tfoot>