【问题标题】:LOAD DATA LOCAL in cron job在 cron 作业中加载本地数据
【发布时间】: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

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

【问题讨论】:

标签: php sql pdo cron


【解决方案1】:

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

【讨论】:

  • 刚刚尝试过,不幸的是,从任何 php 脚本运行时我都会遇到相同的错误。知道为什么它可以与 phpmyadmin 一起使用吗?
猜你喜欢
  • 2019-10-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
相关资源
最近更新 更多