我正在尝试通过在没有 root 用户的 WSL 环境上执行 Laravel PHP 脚本,使用单个查询将行数据集导出到 csv/txt 文件,如here或here所述。
我发现的问题与那些帖子中提到的相同,但我无法下定决心解决它。
首次在 MySQL 中执行类似的 SQL 查询时,例如:
SELECT * INTO OUTFILE "/tmp/posts.csv" FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" FROM posts;
收到了
错误代码:1.无法创建/写入文件“mp\posts.csv”(错误代码:2 - 没有这样的文件或目录)
无论目录是什么(我已经尝试过很多目录),除了 MySQL 默认目录,部署后我将无法访问该目录。
该文件存在并且为空,所以我猜这是相同的权限问题,到目前为止我检查:
show grants
显示 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
SHOW VARIABLES LIKE "secure_file_priv";
返回 nullGRANT FILE ON *.* TO 'root'@'localhost';
(作为测试)结果相同,没有变化。root
用户执行 PHP 脚本,结果相同。有什么想法缺少什么或需要采取什么步骤吗?
最后,我在
secure_file_priv
变量中添加了完整的本地路径,并且通过 MySQL 工作台的 SQL 查询正确执行,这样就解决了这个问题!当通过 PHP 脚本尝试相同的查询时(我位于 Windows 10 WSL 子系统中),脚本会失败,并警告目录不正确,我必须使用之前设置的目录。我想这可能是因为 WSL 目录没有正确映射