在cron作业中加载数据本地

时间:2014-10-06 11:09:19

标签: php sql pdo cron

我遇到一些有问题的问题......

我正在尝试通过使用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服务器14.04

我确信我一定会遗漏一些东西,但不知道是什么,有没有人有任何建议或建议来解决这个问题?

1 个答案:

答案 0 :(得分:0)

简单的解决方案:为CRON作业创建一个空白的PHP文件,并通过CURL或file_get_contents调用上面的脚本(就像你从浏览器中调用它一样)。这将帮助您避免依赖性问题