mysql - MySQL 连接器/网络批量上传器在远程服务器上找不到文件
问题描述
我浏览了许多页面试图找到答案,但没有运气。我有一个用 C# 构建的 .NET 页面,直到几天前它一直运行良好。现在它不起作用,我正在拔头发以找出原因。
该页面有一个文件上传器,用于上传 .csv 文件并将其保存到 Web 服务器上的文件夹中。然后它使用 MySQL Bulk Uploader 将记录插入到另一台服务器上的数据库中。
我已经确认文件正在上传到正确的文件夹,但是当 MySQL 尝试插入记录时,它失败并显示消息“File 'E:\inetpub\wwwroot\training\data_uploads\filename.csv' not found (Errcode: 2 - 没有相应的文件和目录)”
这个页面已经运行了几年没有任何问题,但是我更新了一些 NuGet 包并删除了一些没有使用的包,现在它停止了工作。我错过了什么?我需要重新添加一个包或 .dll 吗?不幸的是,我不记得我删除了什么。
这是我正在使用的代码:
protected void btnGo_Click(object sender, EventArgs e)
{
try
{
//if file is selected for upload
if (btnSelectFile.HasFile)
{
//upload data file to server
string path = string.Concat(Server.MapPath("~/data_uploads/" + btnSelectFile.FileName));
btnSelectFile.SaveAs(path);
string conString = ConfigurationManager.ConnectionStrings["nameOfConnectionString"].ConnectionString;
MySqlConnection conn = new MySqlConnection(conString);
conn.Open();
//get rid of old data
MySqlCommand truncateTerms = new MySqlCommand("TRUNCATE terms_temp;", conn);
truncateTerms.ExecuteNonQuery();
//create bulk uploader and set parameters
var bl = new MySqlBulkLoader(conn);
bl.TableName = "terms_temp";
bl.FieldTerminator = ",";
bl.FieldQuotationCharacter = '"';
bl.LineTerminator = "\r\n";
bl.FileName = path;
bl.NumberOfLinesToSkip = 2;
//insert data
var inserted = bl.Load(); //This is where it fails
conn.Close();
//do some other stuff
catch (Exception ex)
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = ex.Message.ToString();
}
}
解决方案
如果您要批量加载存储在Web服务器而不是数据库服务器上的文件,则需要设置MySqlBulkLoader.Local = true
, 以指示该文件是数据库客户端的本地文件。否则,服务器将给出找不到文件的错误。
出于安全原因,您还需要AllowLoadLocalInfile=true
在连接字符串中设置以启用此功能。
推荐阅读
- angular - 角度日期范围选择器
- python - sublime text 3、pygame显示为空
- javascript - bootsnav.js:559 未捕获类型错误:无法设置未定义的属性“偏移”
- git - 如何使用命令行在 GitLab 中添加协作者?
- java - 当我单击 jbutton 图像时无法显示框架
- html - 您如何将使用 BootstrapValidate 创建的错误消息居中?
- python-3.x - 如何为班级编写单元测试?
- db2 - 错误:DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703,SQLERRMC=CON.CONTACT_ID,DRIVER=4.21.29
- node.js - 获取记录时在 Netsuite 中获取 salesOrder 时出错
- typescript - 如何提取 typescript mongoose/typegoose 模式