【发布时间】:2014-10-06 11:09:19
【问题描述】:
我在整理这个时遇到了一些问题......
我正在尝试通过使用 cron 运行的 PHP 脚本将 CSV 文件导入数据库。我收到错误“语法错误或访问冲突:1148 此 MySQL 版本不允许使用的命令”。使用 PDO 完成导入:
$this->database = new \PDO("mysql:host=".dbHost.";dbname=".dbTable, dbUserName, dbPassword, array(\PDO::MYSQL_ATTR_LOCAL_INFILE => TRUE));
$this->controller->putIntoDatabase("LOAD DATA LOCAL INFILE '".ftpPriceFileDestTXT."' INTO TABLE my_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'");
如您所见,我提供了 LOCAL_INFILE 属性。我还在 [client] 和 [mysqld] 部分下将 local-infile=1 添加到 my.cnf 中。所有 php.ini 文件(在目录 /etc/php5/apache2、cgi 和 cli 中)在 [MySQL] 和 [MySQLi] 下都包含 mysqli.allow_local_infile = On,并且都未注释。
如果在 phpmyadmin 中尝试,一切正常,没有错误,并且文件的全部内容被导入。我似乎无法通过 cron(或通过 shell_exec)让它工作。给 cron 和 shell_exec 函数的参数是
/usr/bin/php /home/full/path/to/my/script/cron.php suppliedArgument
我在 VPS 机器上运行 Ubuntu server 14.04
我确定我一定遗漏了一些东西,但不知道是什么,有没有人有任何解决这个问题的建议或建议?
【问题讨论】:
-
已尝试该线程中所有建议的解决方案均无济于事
-
这是一个已经回答的问题。您可以查看解决方案 [这里][1] [1]:stackoverflow.com/questions/12819098/…
-
这些人可能会得到答案,但正如我在原始问题中所说,在尝试了以上所有方法后,我的问题仍然存在