我知道这里有很多关于它的文章,我认为我们的问题是具体的。问题是mysql经常会返回此错误:
回答这个经常是您遇到的问题是,您仍在使用DataReader读取数据时启动第二个MySqlCommand。 MySQL连接器只允许一个并发查询。您需要将数据读入某个结构,然后关闭阅读器,然后处理数据。遗憾的是,如果您的处理涉及进一步的SQL查询,则无法处理数据。
但我们的sw open datareader,closedatareader,正在等待,直到第一次关闭,然后打开新的等等......
因此每个选择都有自己的datareader,当select结束时,datareader就会忘记。
有人知道这个问题吗?
下一个问题是选择慢,somethimes选择需要0 ms,某些选择相同(表有0-5行)需要
11.12.2013 14:53:18:Spustam loc。查询:SELECT * FROM clovek WHERE id_doch ='00080005'LIMIT 1
11.12.2013 14:53:18:Koncim loc。查询:SELECT * FROM clovek WHERE id_doch ='00080005'LIMIT 1
11.12.2013 14:53:18:Zobrazujem形成overenia 11.12.2013 14:53:18:Spustam查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:53:18:Chyba MySQL:已经有一个与此Connection关联的开放DataReader必须先关闭..查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:53:18:Zatvaram MySQL。查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:53:19:Spustam查询:UPDATE vyr_operacie SET koniec ='20131211145307'WHERE id_doch ='00080005'AND koniec =''订购zaciatok LIMIT 1
11.12.2013 14:53:19:Koncim查询:UPDATE vyr_operacie SET koniec ='20131211145307'WHERE id_doch ='00080005'AND koniec =''ORDER BY zaciatok LIMIT 1. Trvanie:0 ms。
11.12.2013 14:53:19:Spustam查询:SELECT * FROM history WHERE datum ='20131211145311'AND_doch ='00080005'AND pr ='0'AND typ ='0'AND fy ='5'AND vlozil ='CZ'AND手册='0'限制1
11.12.2013 14:53:20:Koncim查询:SELECT * FROM history WHERE datum ='20131211145311'AND_doch ='00080005'AND pr ='0'AND typ ='0'AND fy ='5'AND vlozil ='CZ'AND manual ='0'LIMIT 1. Trvanie:0 ms。
11.12.2013 14:53:20:Spustam查询:现在选择()FROM许可
11.12.2013 14:53:20:Chyba MySQL:已经有一个与此Connection关联的开放DataReader必须先关闭..查询:SELECT NOW()FROM licencia
11.12.2013 14:53:20:Zatvaram MySQL。查询:现在选择()FROM licencia
长选择的第二个问题
11.12.2013 14:54:13:Zobrazujem形成overenia 11.12.2013 14:54:13:Spustam查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:54:13:Koncim查询:SELECT * FROM history WHERE datum ='20131211145410'AND_doch ='00080005'AND pr ='0'AND typ ='0'AND fy ='5'AND vlozil ='CZ'AND manual ='0'LIMIT 1. Trvanie:0 ms。
11.12.2013 14:54:13:Chyba MySQL:已经有一个与此Connection关联的开放DataReader必须先关闭..查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:54:13:Zatvaram MySQL。查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:54:13:Spustam查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1
11.12.2013 14:54:13:Uploadnute zaznamy:1 11.12.2013 14:54:27:Koncim查询:SELECT * FROM spravy WHERE id_doch ='00080005'AND precitane =''LIMIT 1. Trvanie:14000 ms。
11.12.2013 14:54:27:Spustam查询:现在选择()FROM licencia 11.12.2013 14:54:27:Koncim查询:现在选择()FROM licencia。特鲁瓦:0毫秒。
public static DataTable spustiQuery(string query)
{
if (nastavenia.LOG) CustomExHa.AddLog("Spustam query: " + query);
DateTime zaciatok = DateTime.Now;
while (bezi_query)
{
Thread.Sleep(50);
pocet_query++;
if (pocet_query > 500)
{
bezi_query = false;
pocet_query = 0;
}
}
bezi_query = true;
DateTime start = DateTime.Now;
DataTable tmp = new DataTable();
DataTable tmpempty = new DataTable();
tmpempty.Columns.Add("test", typeof(int));
string tmpstr = "";
DataSet ds = new DataSet();
MySqlDataAdapter adapter = new MySqlDataAdapter();
//MySqlDataReader reader = new MySqlDataReader();
if (MYSuperConn == null)
{
MYSuperConn = new MySqlConnection(connStr + ";Connection Timeout=30; default command timeout=6000");
}
if (MYSuperConn.State != ConnectionState.Open)
{
try
{
MYSuperConn.Open();
StavDB = true;
}
catch (Exception ex)
{
CustomExHa.AddLog("Chyba MySQL: " + ex.Message + ". Query: " + query);
StavDB = false;
bezi_query = false;
}
}
else
{
StavDB = true;
}
//MySqlConnection mc = MYSuperConn.Clone();
adapter.SelectCommand = new MySqlCommand(query, MYSuperConn);
//reader = new MySqlCommand(query, MYSuperConn).ExecuteReader();
try
{
//reader.fil
adapter.Fill(ds);
StavDB = true;
}
catch (Exception ep)
{
try
{
//MYSuperConn.Close();
bezi_query = false;
}
catch
{
bezi_query = false;
}
tmpstr = ep.Message;
bezi_query = false;
CustomExHa.AddLog("Chyba MySQL: " + ep.Message + ". Query: " + query);
if (ep.Message.IndexOf("already an open DataReader") > 0)
{
CustomExHa.AddLog("Zatvaram MySQL. Query: " + query);
MYSuperConn.Close();
return spustiQuery(query);
}
}
try
{
if (ds.Tables.Count > 0)
{
tmp = ds.Tables[0];
}
else
{
tmp = null;
}
}
catch (Exception ep)
{
tmpstr = ep.Message;
bezi_query = false;
CustomExHa.AddLog("Chyba MySQL: " + ep.Message + ". Query: " + query);
}
bezi_query = false;
DateTime koniec = DateTime.Now;
TimeSpan trvanie = koniec - zaciatok;
if ((tmp == null) && (query.IndexOf("SELECT ") > -1)) CustomExHa.AddLog("Chyba MySQL: Null Result. Query: " + query);
if (nastavenia.LOG) CustomExHa.AddLog("Koncim query: " + query + ". Trvanie: " + trvanie.TotalMilliseconds.ToString() + " ms.");
return tmp;
}