PHP 5.6 - 此MySQL版本不允许使用该命令

时间:2016-09-28 10:05:20

标签: php mysql

我有一个每天从cron作业运行的php脚本,解压缩包含文本数据的大型zip文件并将其保存回mySQL数据库。

zip文件每天更新​​并上传到托管php文件的FTP站点。

这几个月已经100%正常工作,但我认为最近我们的托管已经升级到PHP 5.6版,现在我收到了这些错误:

Error populating table: The used command is not allowed with this MySQL version

填充mySQL表的代码是:

$loadfile = "LOAD DATA LOCAL INFILE '$textfile' INTO TABLE $tablename FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 1 LINES";
mysqli_query($conn, $loadfile)

我真正不理解的是,有时似乎运行正常,有时它会失败!也许每周一次它现在可以正常工作,并且在其他所有日子里都失败了。

PHP中有什么变化意味着上面的代码现在错了吗?

任何人都可以帮助使用上面的代码让它在PHP 5.6上可靠运行吗?

1 个答案:

答案 0 :(得分:0)

运行此:show variables like '%local%'

如果local_infile ='关',则'开'

有关详细信息,请查看此链接 Mysql Load data

尝试按照以下步骤操作:

1)打开my.cnf并在[mysqld]和[mysql]

下添加“local-infile = 1”行

的[mysqld] 本地的infile = 1

[MySQL的] 本地的infile = 1

保存并退出文件。

/etc/init.d/mysql restart

2)为用户授予文件权限

的MySQL>将上的文件授予user @'localhost';

的MySQL>冲洗权限;

3)重启mysql

/etc/rc.d/init.d/mysql restart

1)打开my.cnf并在[mysqld]和[mysql]

下添加“local-infile = 1”行

的[mysqld] 本地的infile = 1

[MySQL的] 本地的infile = 1

保存并退出文件。

/etc/init.d/mysql restart

2)上面应该允许你在mysql shell中运行命令,但是你在浏览器上作为php脚本运行它时遇到了问题。 所以检查它是否在php中启用。

root @ abc#grep mysql.allow_local_infile /etc/php5/apache2/php.ini mysql.allow_local_infile = On

现在,上面的命令显示它已启用。如果为Off,请将其更改为On并重新启动apache。

3)我尝试通过编辑connect命令来修改我的脚本,如下所示。

的mysql_connect(“本地主机”,”为myuser”,”为mypass”,”假”,128);

链接参考:The used command is not allowed with this MySQL version – LOAD DATA LOCAL INFILE