C# - 将数据加载到mysql - 致命错误

时间:2018-05-22 13:12:01

标签: c# mysql sql visual-studio file

我试图将数据加载到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;。 当我删除它时,代码可以工作(它在我的情况下不起作用,因为没有它会尝试将数据放入主键中)但它不会显示第一个错误。

...谢谢

1 个答案:

答案 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);