c# - 当 DB 消失时,MySqlConnection Connect() 方法抛出异常的速度非常慢 C#

标签 c# mysql

我正在创建一个 C# 服务器,它打开一个命名管道并收集客户端发送给它的数据。基本上,我使用 .NET MySql 连接器和 MySqlConnection 类将收集到的信息存储在 mysql 数据库中。我还添加了一个回退规则,以防数据库无法访问,缓​​冲 SQL 文件中客户端发送的信息,并在再次可用时将其导入数据库。 一切正常,除非数据库完全消失(例如,当运行数据库的服务器因为崩溃而不再在网络上时),Connect() 方法需要永远抛出异常。这是 Not Acceptable ,因为客户端会发送大量数据。有没有什么办法解决这一问题?如果查询因表不存在或类似原因而失败,它会立即返回错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using MySql.Data.MySqlClient;

namespace PipeServer
{
    class MySqlConnector
    {
        //register logger
        private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        public delegate void MessageReceivedHandler(string message);
        public event MessageReceivedHandler MessageReceived;

        private string host;
        private string database;
        private string user;
        private string password;
        private MySqlConnection connection;
        private List<string> rows = new List<string>();



        public MySqlConnector()
        {
            this.host = Settings.Default.db_host;
            this.database = Settings.Default.db_schema;
            this.user = Settings.Default.db_user;
            this.password = Settings.Default.db_pw;
            string myConnectionString = "SERVER=" + this.host + ";" +
                        "DATABASE=" + this.database + ";" +
                        "UID=" + this.user + ";" +
                        "PASSWORD=" + this.password + ";";

            connection = new MySqlConnection(myConnectionString);




        }

        public bool Connect()
        {
            if (connection.State != System.Data.ConnectionState.Open)
            {
                try
                {
                    connection.Open();
                    this.MessageReceived("Connected to Database");
                    return true;
                }
                catch (MySqlException ex)
                {
                    log.Error("failed to connect! mysql error: " + ex);
                    this.MessageReceived("No Database connection - Error: "+ex);
                    return false;
                }

            }
            else
            {
                this.MessageReceived("Connected to Database");
                return true;
            }

        }
        .
        .
        .
    }
}

非常感谢任何提示!提前致谢!

最佳答案

当你说永远时,你的意思是像 30 多岁?

您可能正在寻找将 TimeOut 设置添加到 ConnectionString 中的方法。

http://www.connectionstrings.com/mysql

关于c# - 当 DB 消失时,MySqlConnection Connect() 方法抛出异常的速度非常慢 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434452/

相关文章:

php - 如何快速执行多个mysql查询

mysql - 如果在触发器中不存在

php - MySQL 按另一个表的计数排序

c# - ZMQ recv 随机拾取垃圾数据 有谁知道为什么?

MYSQL - 查询获取不同的发送者ID和接收者ID以及richesta_id

c# - 如何 : download a file keeping the original name in C#?

c# - DbContext Unity 不调用 HttpContextLifetimeManager.RemoveValue() 坏事?

mysql - 使用pig将数据插入mysql表

c# - 要解密的数据超出了该模数的最大值 36 字节

c# - Xml Linq Query(通过属性和属性值获取元素)