código_monolito
ASUNTO
Al intentar conectarme a maria db usando mysql.data, aparece este error:
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.
El archivo .dll se compiló con dotnet build bajo debian 10 sin advertencias ni errores
INTENTÓ:
Quiero conectarme a la base de datos sql (MariaDB) a través de C# y MySql.Data de Oracle.
Primero creé una carpeta con el script C# y las .dll del paquete MySql.Data.
Después de eso, agregué la referencia al .proj:
<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>
Para compilar el proyecto, utilicé Visual Studio Code SSH Connection para ejecutarlo en vsc Terminal: dotnet build.
RESULTADO:
Se inició correctamente el script con la salida de prueba, pero después de SQL Connection Open (), se arrojó el error como se ve arriba.
MI CÓDIGO:
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();
}
}
}
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
¿La base de datos MariaDB está en la misma máquina desde la que está ejecutando el código?
–Michael Buckman
7 de febrero a las 19:58
@MichaelBuckman Sí, está alojado en la máquina local
– código_monolito
7 feb a las 22:31
Probablemente se trate de una falta de coincidencia del marco: no puede ejecutar ensamblajes creados para .NET Framework en .NET Core y viceversa (excepto en circunstancias especiales). Normalmente, esto se resuelve no compilando contra un ensamblado directamente, sino contra un paquete NuGet que obtendrá automáticamente los ensamblados apropiados para el marco.
– Jeroen Mostert
8 de febrero a las 11:08
@JeroenMostert Gracias, también probé esto, ahora obtengo el nuevo error que actualicé en la publicación
– código_monolito
8 de febrero a las 19:36