我花了几个小时在互联网上搜索并尝试解决此问题,最后屈服并决定直接寻求帮助。
我正在运行 Linux 专用服务器,需要通过运行从主机上的 php 页面执行的 mysql 查询将数据加载到我的 mysql 数据库中。
我遇到的问题是我不知道目录结构需要是什么样子才能真正找到我的文件并上传它。我将在下面举一个例子。
LOAD DATA INFILE 'WHAT IN THE WORLD GOES HERE TO MAKE THIS WORK?'
INTO TABLE customers
每次我尝试运行它时返回的错误是
Error Code: 1045. Access denied for user
我已经检查了权限,并且用户对相应数据库拥有完整权限。根据我自己的研究,我发现它可能会因多种原因引发此错误,其中之一是它找不到我尝试上传的文件。
进入public_html文件夹后我的文件结构如下:
reports/uploads/fileName.csv
感谢您提前提供的任何帮助!这已经让我发疯了。如果我只是以完全错误的方式做这件事,或者有一种更简单的方法来完成我正在做的事情,我也愿意接受这方面的建议。
最佳答案
如 documentation 中所述:
- 如果文件名是绝对路径名,服务器将按给定的方式使用它。
- 如果文件名是包含一个或多个前导部分的相对路径名,服务器将搜索相对于服务器数据目录的文件。
- 如果给出的文件名不带前导组件,服务器将在默认数据库的数据库目录中查找该文件。
public_html
文件夹不相关,因为该文件正在由 MySQL 服务器读取。如果您的网络服务器和数据库服务器是不同的计算机,并且您尝试从客户端而不是服务器加载文件,则需要使用 LOAD DATA LOCAL INFILE 来指定。然后文件名将相对于客户端应用程序的工作目录进行解释。
关于php - LOAD DATA INFILE 目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057339/