yu_tina 2023-02-01 11:37 采纳率: 0%
浏览 122

MySqlPoolManager.GetPool 报错An item with the same key has already been added.

报错:

System.ArgumentException: An item with the same key has already been added. Key: database=timsdb;server=127.0.0.1;port=3306;user id=admin;password=123456;characterset=utf8;allowuservariables=True;defaultcommandtimeout=600;sslmode=Disabled
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at MySql.Data.MySqlClient.MySqlPoolManager.GetPool(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlConnection.Open()

环境

数据库版本:Mysql Ver 8.0.30 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql.data.dll 引用版本 8.0.31

代码:

var providerName="MySql.Data.MySqlClient";
var _connectionString="database=timsdb;server=127.0.0.1;port=3306;user id=admin;password=123456;characterset=utf8;allowuservariables=True;defaultcommandtimeout=600;sslmode=Disabled";
          DbProviderFactory _dbProviderFactory = DbProviderFactories.GetFactory(providerName);
       Database     _database = new Database(_connectionString, _dbProviderFactory);
          DbConnection  _dbConnection = _dbProviderFactory.CreateConnection();
        _dbConnection.ConnectionString = _connectionString;

while(true)
{
           if (_dbConnection == null || IsDisposed)
            {
                _dbTransaction = null;
                _dbConnection = _dbProviderFactory.CreateConnection();
                _dbConnection.ConnectionString = _connectionString;
            }

            if (_dbConnection.State == ConnectionState.Open)
            {
                continue;
            }
          _dbConnection.Open();
}

排查思路

1、连接过多导致?报错不一致
2、连接关闭过于频繁?

  • 写回答

4条回答 默认 最新

  • m0_54204465 2023-02-01 12:13
    关注

    这个错误消息表明,你已经在字典中添加了与键 database=timsdb;server=127.0.0.1;port=3306;user id=admin;password=123456;characterset=utf8;allo 相同的项,并且该键值对已存在。在 MySql.Data.MySqlClient.MySqlPoolManager.GetPool 函数中,你需要确保连接字符串是唯一的。你可以尝试给字符串添加一个随机数,以保证连接字符串的唯一性,如下所示:

    var connectionString = "database=timsdb;server=127.0.0.1;port=3306;user id=admin;password=123456;characterset=utf8;allowuservariables=True;defaultcommandtimeout=600;sslmode=Disabled;" + Guid.NewGuid().ToString();
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图