工作两年后,突然在 LOAD DATA LOCAL INFILE 上出现 MYSQL“格式错误的数据包”

Ben*_*Ben 3 php mysql import mysqli file

这是两年来的夜班工作。PHP 文件将 txt 文件导入 MYSQL 数据库。今天在导入TXT文件时突然出现格式错误的数据包。我注意到服务器只运行了 23 小时,所以我认为 GoDaddy 可以更新一些东西。

MYSQL 版本 = 5.6.43-cll-lve

local_infile = ON

如果没有“本地”,我会收到错误消息,“用户拒绝访问”,我尝试授予 FILE 但在通过 SSH 获取 mysql CLI 访问权限时遇到问题(以前从未需要它)并且 PHP MY Admin 没有访问权限。

我已经花了一整天的时间,不知道该怎么做。我也尝试将文件设置为 777。

我已经尝试删除截断部分​​并只进行导入,将导入文件剔除到 3 行,使用以前工作过的旧导入文件 - 无法制作正面或反面。

require('config_dev.php');
$path = '/home/pro/public_html/upload/IDUpload_dev.txt';
$mysqli = new mysqli($hostname,$username, $password, $dbname);

if ($mysqli->connect_error) {
  die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$sql1 = "TRUNCATE TABLE Accounts;";

if (!$mysqli->query($sql1)) {
    echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
} else {
    echo ("Truncated<br>");
}

$sql2 = "LOAD DATA LOCAL INFILE '".$path."' INTO TABLE Accounts
        FIELDS TERMINATED BY ','
        LINES TERMINATED BY '\n'
        IGNORE 1 LINES
        (acct,type,zip)";

if (!$mysqli->query($sql2)) {
    echo "\nQuery execute failed: ERRNO: (" . $mysqli->errno . ") " . $mysqli->error;
} else {
    echo ("Imported.");
}

mysqli_close($mysqli);
Run Code Online (Sandbox Code Playgroud)

dan*_*ack 6

要使用LOAD DATA INFILE LOCALMYSQLI_OPT_LOCAL_INFILE需要连接之前启用。

您应该SHOW GLOBAL VARIABLES LIKE 'local_infile'查看是否在服务器上启用了这也是必需的。

  • 但我不明白你的第一行,我只是做了 SHOW Vars ......我专门搜索并添加了这个: mysqli_options($mysqli, MYSQLI_OPT_LOCAL_INFILE, true); 初始化工作后!我爱你!从两年的工作到昨晚,会发生什么变化? (3认同)