首先,我已经开始学习 C#
从六个月前开始,我英语不好。所以如果我说了一些你听不懂的话,我很抱歉。
现在,我正在用c#开发只连接到mysql服务器(远程和本地)的应用程序。我使用mysql.data.client包 version 8.0.12.
这只意味着“我不发送任何查询。我想找到我可以连接到服务器使用用户名和密码。
然后,我写了这个代码。我有两个问题,我想得到任何建议。
sendCommand = string.Format("host={0}; userid={1}; password={2}; SslMode=none;", pIPAddress.ToString(), mOption1, mOption2);
MySqlConnection mysqlConnention = new MySqlConnection(sendCommand);
mysqlConnention.Open();
if (mysqlConnention.State.ToString() == "Open")
{
result = true;
}
mysqlConnention.Close();
q1应用程序不应该向服务器发送不必要的数据包。但是我从wireshark和它的“show variable”命令中找到了它。我试图更改connectionstring的一些属性(在这段代码中,它被称为“send command”),因为我不想发送“show variable”命令(例如,chacheserverproperties=true、allowbatch=false等等……)
我可以不用“show variable”命令连接吗?
q2(已经解决了,但找不到原因)当我开始开发这个应用程序时,我使用了mysql.data.client 8.0.11。但在那个时候,mysqlconnection.open方法需要很长时间才能连接到服务器(大约7~10秒)
网络问题是没有,我能够连接使用cmd.exe没有很长时间。(这是不需要一秒钟。)我尝试了任何模式,改变服务器连接,重新启动操作系统(应用程序端和服务器端),改变connectionstring属性)。mysql服务器没有死亡,看起来原因不在mysql服务器和网络中(从服务器获取应用程序“servergreeting”数据包不是时间问题,但应用程序向服务器发送“loginrequest”数据包的下一个操作需要很长时间。)
但是我没能解决这个问题。但是我升级了mysql.data.client版本到8.0.12,我可以解决!这个问题是由mysql.data.client 8.0.11引起的吗?我有什么办法吗?
1条答案
按热度按时间jvlzgdj91#
应用程序不应将不必要的数据包发送到服务器…我可以不用“show variable”命令连接吗?
您可以使用另一个ado.net库:mysqlconnector。它在打开连接时发送的数据包要少得多(但可能不会发送尽可能最小的数据包)。
但是在那个时候,mysqlconnection.open方法连接服务器的时间很长(大约7~10秒)……这个问题是由mysql.data.client 8.0.11引起的吗?
这听起来很像mysql bug 80030,它是8.0.11中的一个bug。该案例表示,它将在8.0.13中修复,而不是在8.0.12中修复,但可能oracle在发表该评论后更改了其发布计划。
这也可以通过使用mysqlconnector来解决,mysqlconnector从不使用效率低下的wmi查询,这会导致mysql.data中的性能问题。