我正在尝试使用 PHP 的 mysqli::query 将文件加载到 MySQL(v5.1.38) innodb 表中和一个 LOAD DATA LOCAL INFILE询问。查询返回“格式错误的数据包”错误代码 2027。知道有什么问题吗?
这是目标表:
CREATE TABLE `zbroom`.`lee_datareceive` (
`a` varchar(45) NOT NULL,
`b` varchar(45) NOT NULL,
`c` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这里是查询:
LOAD DATA LOCAL INFILE '/path/to/file.txt'
INTO TABLE lee_datareceive
FIELDS TERMINATED BY '\t';
这是文件数据。值以制表符分隔:
t1 t2 t3
a b c
d e f
g h i
最佳答案
同样的问题。这是权限问题。
来自 php 的 shell exec:
'mysql --user=root --password=zxc db < /stuff.sql'
stuff.sql
LOAD DATA LOCAL INFILE '/stuff.csv' INTO TABLE `stuff` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
错误的数据包格式错误。
解决方案:
chmod 777 /stuff.csv
PHP 在其自己的权限级别上运行,而 mysql 未获得对 stuff.csv 的读取权限
如果你讨厌 chmod 777
关于php - MySQL LOAD DATA LOCAL INFILE 期间出现格式错误的数据包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420140/