[英]MySQL LOAD DATA INFILE "not found (Errcode: 13 - Permission denied)"
上周这行得通,今天不行。 我没有更改 php 文件。 我在此期间所做的就是在我的 Ubuntu 15.04 服务器上运行 apt-get update。
我的 MySQL 语句是:
LOAD DATA INFILE "/var/www/html/uploads/TitleList.csv" INTO TABLE tblLSITitleList FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "\"" IGNORE 5 LINES;
这给出了以下错误:
找不到文件“/var/www/html/uploads/TitleList.csv”(错误代码:13 - 权限被拒绝)
我尝试了以下解决方案(这是我上周早些时候解决这个确切问题的方法: 加载数据输入错误代码:13
我检查了 apparmor,上传文件夹仍然存在。
我也试过 chmodding 各种权限,包括 777,但没有任何帮助。
有什么聪明的建议吗?
虽然可以将CSV复制到mysql数据目录中,但这不是一个好的持续解决方案。 如果您使用的是SQL命令行或代码,请在查询中包含LOCAL选项。
LOAD DATA INFILE
尝试LOAD DATA LOCAL INFILE
如果您使用cPanel或phpmyadmin CSV using LOAD DATA
导入CSV using LOAD DATA
, Use LOCAL keyword
确保启用Use LOCAL keyword
。 这在共享服务器环境中对我有用。
这应该可以防止每次都必须将CSV复制到MySQL数据目录。
来自文档:
For security reasons, when reading text files located on the server,
the files must either reside in the database directory or be
readable by all
我建议将.csv文件复制到数据库目录,例如
cp TitleList.csv /var/lib/mysql/yourdbname/TitleList.csv
然后
LOAD DATA INFILE 'TitleList.csv' INTO etc ...
就我而言, LOAD DATA INFILE
在第一个数据集中取得了成功。 但是对于第二个数据集,我有这个错误代码13。
我做了什么(赢得用户),我按CTRL+ALT+DELETE
然后我选择了Start Task Manager
,然后我进入了processes
选项卡并选择了Excel
然后按下了End Task
。
然后再次尝试LOAD DATA INFILE
并且它有效。
注意:在此之前,我尝试打开CSV文件只是为了检查数据集。 这花了太长时间,因此,我在文件打开之前立即关闭它。
也许不完整的过程扰乱了加载过程。
我不确定PHP,因为我只使用phpmyadmin并使用MySQL
添加 LOCAL 关键字对我有用。 我还确保该文件具有 READ 权限,因为我在 Ubuntu 中工作:
LOAD DATA LOCAL INFILE '/path/to/file/name.csv'
INTO TABLE 'table_name'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.