使用MySql.Data连接MariaDB时遇System.IndexOutOfRangeException异常
使用Oracle MySql.Data组件连接MariaDB时抛出IndexOutOfRangeException异常
异常信息
System.IndexOutOfRangeException: Index was outside the bounds of the array. at System.Diagnostics.TraceInternal.get_AppName () [0x0000e] in <e804fc8285a9419784599893ed028695>:0 at System.Diagnostics.TraceInternal.TraceEvent (System.Diagnostics.TraceEventType eventType, System.Int32 id, System.String format, System.Object[] args) [0x0003d] in <e804fc8285a9419784599893ed028695>:0 at System.Diagnostics.Trace.TraceError (System.String message) [0x00000] in <e804fc8285a9419784599893ed028695>:0 at MySql.Data.MySqlClient.MySqlTrace.LogError (System.Int32 id, System.String msg) [0x00026] in <89b4d3936e0b4e49b8d299ddbfe7933d>:0 at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver () [0x0002e] in <89b4d3936e0b4e49b8d299ddbfe7933d>:0 at MySql.Data.MySqlClient.MySqlPool.GetConnection () [0x0001c] in <89b4d3936e0b4e49b8d299ddbfe7933d>:0 at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00245] in <89b4d3936e0b4e49b8d299ddbfe7933d>:0 at MyResource.Server.ServerMain..ctor () [0x00026] in C:\Users\Maurice\CFX\MyResource\Server\ServerMain.cs:23 Done.
.dll文件已在Debian 10环境下通过dotnet build编译完成,无警告或错误。
已执行操作
- 创建包含C#脚本和MySql.Data包.dll文件的文件夹;
- 在项目文件中添加MySql.Data引用,项目配置如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <DebugType>portable</DebugType> <TargetName>ServerMain.net</TargetName> <DefineConstants>SERVER</DefineConstants> <AssemblyName>TEST.Server.net</AssemblyName> </PropertyGroup> <ItemGroup> <Reference Include="MySql.Data"> <HintPath>MySql.Data.DLL</HintPath> </Reference> </ItemGroup> </Project>
- 通过VS Code SSH连接,在终端执行
dotnet build完成项目构建。
执行结果与代码
脚本可正常启动并输出测试内容,但调用conn.Open()方法时抛出上述异常。C#代码如下:
using System; using System.Threading.Tasks; using MySql.Data.MySqlClient; namespace TEST.Server { public class ServerMain : BaseScript { public static void DBTEST() { var connString = "server=localhost;user=NAME;database=NAME;port=3306;password=*****"; MySqlConnection conn = new MySqlConnection(connString); try { Console.WriteLine("Connecting to MySQL..."); conn.Open(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } public ServerMain() { DBTEST(); } } }
内容的提问来源于stack exchange,提问作者monolith_code
相关产品推荐
相关产品推荐

