C#-将数据填充加载到mysql-致命错误
我试图将数据加载到mysql表中,当我在mysql工作台中运行代码时,它工作正常,但当我尝试在我的c#应用程序中运行它时,我得到以下错误:C#-将数据填充加载到mysql-致命错误,c#,mysql,sql,visual-studio,file,C#,Mysql,Sql,Visual Studio,File,我试图将数据加载到mysql表中,当我在mysql工作台中运行代码时,它工作正常,但当我尝试在我的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 INFIL
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),它需要自动增加1,第二列是日期(varchar),第三列是小时数(varchar)
更新我试图更改加载数据代码,发现出现错误的部分是以下部分:
(@col2,@col3)set date=@col2,hour=@col3代码>。
当我删除它时,代码会工作(在我的例子中它不工作,因为如果没有它,它会尝试将数据放入主键),但它不会显示第一个错误
感谢…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);
旁注:从时间中删除;alter table time auto_increment=1
可以更好地替换为truncate table time
@RaymondNijland感谢您的回复,我将尝试使用其他方法执行。我不相信运行MySQL客户端的ExecuteOnQuery()支持多个用Semicos(;
)分隔的语句@RaymondNijland我试图只执行加载数据代码,但它给了我同样的错误。你试过一步一步地执行命令吗?删除,然后更改,然后加载数据。。。下一个测试可能是合并delete和alter语句。还是会出错?抛出了什么异常?Stacktrace?终于用你的第二个解决方法让它工作了。非常感谢你!!