报错:
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、连接关闭过于频繁?