为了给你一点背景,我在asp.net中有一个web应用程序与MySql连接器5.0.9工作得很好今天我被要求做一些使用MySql成员的原型,我不得不将驱动程序更新到6.0.7,现在我以前的代码不再工作了,它正在生成一个异常与此消息。
执行命令时遇到致命错误。
代码:
MySqlCommand command = new MySqlCommand("SELECT currentt.id, currentt.firstname, currentt.lastname,currentt.iscommented,currentt.rowversion,ifnull(parent.id,0) as parentid, parent.rowversion as parentversion,child.id as childid,child.rowversion as childversion FROM (SELECT hierarchy(id) AS id, @level AS level FROM (SELECT @start_with := 0, @id := @start_with,@level := 0) vars, names2 WHERE @id IS NOT NULL) ho JOIN names2 currentt ON currentt.id = ho.id left outer join names2 as parent on (currentt.parent=parent.id) left outer join names2 as child on (child.parent = currentt.id and child.id<>currentt.id)order by level",connection);
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = command;
ds = new StrongDataSet();
adapter.Fill(ds, "names");//exception thrown here
connection.Close();
做了一些研究后,我认为我的问题是来自嵌套的选择语句,我设置一些变量使用存储过程@start_time,@level &@ id
现在我很困惑,这似乎是一个错误预防失败,因为它是参数化的查询符号,但我不确定如何修改我的代码,以符合新的MySQL驱动程序?
有什么建议吗?再保险!
@sql变量和Connector变量有一个已知的问题。
http://dev.mysql.com/doc/refman/5.1/en/connector-net-connection-options.html尝试在您的连接字符串中设置Allow User Variables=true
。