我试图将数据加载到mysql表中,当我在MySql Workbench中运行代码时,它工作正常,但是当我尝试在我的c#应用程序中运行它时,我收到此错误:
Fatal error encountered during command execution.
这是我的代码:
mConn.Open(); //Opens the connection
string query = "delete from time; alter table time auto_increment=1; LOAD DATA INFILE 'C://time_u.txt' INTO TABLE `time` CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES (@col2, @col3) set date = @col2, hour = @col3;";
WriteDataToDataBase(query); //This guy just executes the command.ExecuteNonQuery();
mConn.Close();
Ps:我有3列,第一列是我无法导入的主键(id),它需要自动上升一个,第二个是日期(varchar),第三个是小时(也是varchar)。
更新
我试图更改LOAD DATA代码,我发现给出错误的部分是这部分:(@col2, @col3) set date = @col2, hour = @col3;
。
当我删除它时,代码可以工作(它在我的情况下不起作用,因为没有它会尝试将数据放入主键中)但它不会显示第一个错误。
...谢谢
答案 0 :(得分:1)
MySql.Data将@col2
,@col3
视为(未定义)查询参数,这会导致此错误。一种解决方法是将AllowUserVariables=true
添加到您的连接字符串。
另一种解决方法是避免变量并直接加载到您想要的列中:
LOAD DATA INFILE 'C://time_u.txt'
INTO TABLE time
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(date, hour);