问题描述
我已经为我的 .net 核心应用程序设置了 TiDB。 我正在将 TiDB 与 .net 核心应用程序中的 MYSQL 连接器连接起来。 下面是我的连接字符串
server=server1,server2,server3;Port=4000;UID=test_user;PWD=****;database=Test_database;ConnectionReset=false;
因为我已经用逗号分隔符指定了连接字符串中的所有节点,所以当试图加载一些负载时,它总是转到第一个节点。 理想情况下,请求负载应该分布在所有节点上。
我运行了 SHOW FULL PROCESSLIST
命令来检查仅显示在第一个节点中的应用请求。
这是我连接 TiDB 的源代码。
public async Task<Error> ExecuteStatementAsync(Context ctx,MySqlCommand command)
{
Error error = default;
try
{
using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
MySqlTransaction trans = default;
try
{
await connection.OpenAsync();
trans = connection.BeginTransaction();
using MySqlCommand cmd = command;
cmd.Connection = connection;
cmd.Transaction = trans;
cmd.Prepare();
await cmd.ExecuteNonQueryAsync();
trans.Commit();
return null;
}
catch (Exception ex)
{
// populate error
if (trans != null)
{
trans.Rollback();
}
return error;
}
}
}
catch (Exception ex)
{
// populate error
return error;
}
}
public async Task<(DataTable,Error)> SelectAsync(Context ctx,MySqlCommand command,string queryIdentifier)
{
Error error = default;
try
{
using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
DataTable dt = new DataTable();
MySqlCommand cmd = command;
try
{
await connection.OpenAsync();
cmd.Connection = connection;
cmd.Prepare();
using (DbDataReader reader = await cmd.ExecuteReaderAsync())
{
dt.Load(reader);
}
return (dt,null);
}
catch (Exception ex)
{
return (null,error);
}
}
}
catch (Exception ex)
{
return (null,error);
}
}
代码或连接字符串有什么问题吗? 为什么会这样?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)