我需要知道更新到 MYSQL 8 后用什么替换这段代码

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

此代码是用于将数据从文本文件导入 WordPress 数据库的一部分:

    mysqli_query($cons, '
        LOAD DATA LOCAL INFILE "'.$file.'"
            REPLACE INTO TABLE '.$table.'
            FIELDS TERMINATED by \'\t\'
            LINES TERMINATED BY \'\n\'
            IGNORE 1 LINES;
    ')or die(mysqli_error($cons));

现在更新 MYSQL 8 后,我们收到此错误: 禁用加载本地数据;必须在客户端和服务器端启用此功能

我们的主机确认他们最近更新了 MYSQL,所以这就是罪魁祸首。

我还没有真正尝试过任何事情,因为我对这件事不是专业人士,所以我很犹豫。我想知道是否必须对上面的 mysqli_query 声明进行简单的更改才能使其在不使用“LOAD DATA LOCAL”的情况下工作。

我只研究代码的数据操作部分,而不是从文件中获取数据的部分,因此我们将不胜感激!

mysql wordpress mysqli mysql-8.0
1个回答
0
投票

要使用

LOAD DATA LOCAL INFILE
,您和您的数据库托管提供商都需要设置一个选项。

对于带有 mysqli 的 PHP,您需要设置 PHP 变量

mysqli.allow_local_infile=1
。请注意,在 7.2.2 和 7.3.3 之前的 PHP 中,该值已默认设置为 1。但它不再是当前 PHP 中的默认值。因此,如果您最近升级了 PHP,您可能需要在 php.ini 中设置此变量。请参阅https://www.php.net/manual/en/mysqli.configuration.php

此外,在 MySQL Server 端,您的提供商需要启用

local_infile
中的
my.cnf
选项。请参阅https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html了解完整说明。

必须启用这两个选项,一个在客户端,一个在服务器,否则将不允许本地文件导入。这就是您看到的错误的含义:

禁用加载本地数据;必须在客户端和服务器端启用此功能

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