错误 phpmyadmin #2000 - 禁止加载数据本地 INFILE,检查 mysqli.allow_local_infile

问题描述 投票:0回答:2

当我们通过 phpmyadmin 使用“csv using load data”导入 csv 时,我们在 phpmyadmin 中出现此错误,并且从 csv 导入到我们的表中尚未完成。 phpmyadmin 版本 4.4.15.10

使用具有相同数据库和相同数据服务器的另一个版本的 phpmyadmin 4.4.15.8,我们没有问题。

谢谢您的回答

请求 SQL :

LOAD DATA LOCAL INFILE '/tmp/phpRH1Q9u' INTO TABLE `glpi_corresp_usernames` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
MySQL a répondu: Documentation

#2000 - LOAD DATA LOCAL INFILE is forbidden, check mysqli.allow_local_infile


 phpMyAdminWarning in ./libraries/dbi/DBIMysqli.class.php#262
 mysqli_query(): LOAD DATA LOCAL INFILE forbidden

Backtrace

./libraries/dbi/DBIMysqli.class.php#262: mysqli_query(
object,
string 'LOAD DATA LOCAL INFILE \'/tmp/phpRH1Q9u\' INTO TABLE `glpi_corresp_usernames` FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\'',
integer 0,
)
./libraries/DatabaseInterface.class.php#183: PMA_DBI_Mysqli->realQuery(
string 'LOAD DATA LOCAL INFILE \'/tmp/phpRH1Q9u\' INTO TABLE `glpi_corresp_usernames` FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\'',
object,
integer 0,
)
./libraries/import.lib.php#170: PMA_DatabaseInterface->tryQuery(string 'LOAD DATA LOCAL INFILE \'/tmp/phpRH1Q9u\' INTO TABLE `glpi_corresp_usernames` FIELDS TERMINATED BY \';\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\'')
./libraries/plugins/import/ImportLdi.class.php#158: PMA_importRunQuery()
./import.php#615: ImportLdi->doImport(array)
php mysql phpmyadmin
2个回答
0
投票

这对我在 phpMyAdmin 中的情况有所帮助:

  1. 运行此命令:
    show global variables like 'local_infile';
  2. if 值 if
    OFF
    运行:
    set global local_infile=true;
  3. 然后就像 @Guido Faecke 说的,检查你的
    php.ini
    是否有
    mysqli.allow_local_infile = On
  4. 在这一行中删除分号 ->
    ;mysqli.allow_local_infile = On
  5. 重启apache即可运行
LOAD DATA LOCAL INFILE...

0
投票

我在 ubuntu 20.04 上使用 mysql 服务器 8.0.35 和 php 7.4 从 phpmyadmin 4.9.5 执行 sql 时遇到了同样的问题

我将 global local_infile=on 设置为 sql 中的第一步,以避免“1290 - MySQL 服务器正在使用 --secure-file-priv 选项运行,因此无法执行”;但我收到错误 #2000 local infile is禁止,所以我修改了 /etc/php/7.4/apache2 和 /etc/php/7.4/cli 中的 php.ini (我发现不同的建议......)但它不起作用.

mysqli.allow_local_infile 在 php 中已启用,如您所见

sudo php -r 'phpinfo();' | grep -i mysqli
/etc/php/7.4/cli/conf.d/20-mysqli.ini,
mysqli
MysqlI Support => enabled
mysqli.allow_local_infile => On => On
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off
API Extensions => mysqli,pdo_mysql

我哪里错了?

谢谢吉安皮耶罗

© www.soinside.com 2019 - 2024. All rights reserved.