Raspberry Pi 2 Mono .Net MySqlConncetor Fehler!

Gast #4289507
Hallo,

ich habe auf dem Raspberry Pi 2 Mono

(Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4+rpi1) installiert 
und auch eine KonsolenApplication mit Datenbank anbindung (MySql) 
geschrieben.

Ich habe die .exe und die MySql.Data.dll System.Data.dll auf den 
Raspberry kopiert.

Wenn ich die exe mit #mono test.exe starte erhalte ich folgenden Fehler:

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 
'System.Data, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Data, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: 
Could not load file or assembly 'System.Data, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its 
dependencies.
File name: 'System.Data, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089'
Gast #4289526
ebenso wie die Meldung:

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 
'MySql.Data, Version=6.8.6.0, Culture=neutral, 
PublicKeyToken=c5687fc88969c44d' or one of its dependencies.
File name: 'MySql.Data, Version=6.8.6.0, Culture=neutral, 
PublicKeyToken=c5687fc88969c44d'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: 
Could not load file or assembly 'MySql.Data, Version=6.8.6.0, 
Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its 
dependencies.
File name: 'MySql.Data, Version=6.8.6.0, Culture=neutral, 
PublicKeyToken=c5687fc88969c44d'
Gast #4289534
was mich wunder ist wenn die Aus dem bin Ordner die Datei 
"MySql.Data.dll" kopiere auf den Mac kopiere wird daraus 
"mysql.data.dll" von da aus kopiere ich sie dann auf den Raspberry muss 
ich sie dann wieder umbenennen?
Gast #4290837
jetzt bekomme ich folgende Meldung wenn ich die .exe ausführe

Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type 
initializer for MySql.Data.MySqlClient.MySqlConnection ---> 
System.TypeInitializationException: An exception was thrown by the type 
initializer for System.Collections.Generic.Queue`1 ---> 
System.InvalidProgramException: Invalid IL code in 
System.Collections.Generic.Queue`1:.cctor (): method body is empty.

  --- End of inner exception stack trace ---
  at 
MySql.Data.Common.Cache`2[System.String,MySql.Data.MySqlClient.MySqlConn 
ectionStringBuilder]..ctor  (Int32 initialCapacity, Int32 capacity) 
[0x00000] in <filename unknown>:0
  at MySql.Data.MySqlClient.MySqlConnection..cctor () [0x00000] in 
<filename unknown>:0
  --- End of inner exception stack trace ---
  at MySQLReadWrite.Program.init () [0x00000] in <filename unknown>:0
  at MySQLReadWrite.Program.Main (System.String[] args) [0x00000] in 
<filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: 
An exception was thrown by the type initializer for 
MySql.Data.MySqlClient.MySqlConnection ---> 
System.TypeInitializationException: An exception was thrown by the type 
initializer for System.Collections.Generic.Queue`1 ---> 
System.InvalidProgramException: Invalid IL code in 
System.Collections.Generic.Queue`1:.cctor (): method body is empty.

  --- End of inner exception stack trace ---
  at 
MySql.Data.Common.Cache`2[System.String,MySql.Data.MySqlClient.MySqlConn 
ectionStringBuilder]..ctor  (Int32 initialCapacity, Int32 capacity) 
[0x00000] in <filename unknown>:0
  at MySql.Data.MySqlClient.MySqlConnection..cctor () [0x00000] in 
<filename unknown>:0
  --- End of inner exception stack trace ---
  at MySQLReadWrite.Program.init () [0x00000] in <filename unknown>:0
  at MySQLReadWrite.Program.Main (System.String[] args) [0x00000] in 
<filename unknown>:0
Gast #4290848
bass schrieb:
> jetzt bekomme ich folgende Meldung wenn ich die .exe ausführe

das wird jetzt wohl schwerer. Das scheint mir mehr ein Problem zwischen 
Mono und deiner exe zu sein.

Da kannst du nur mal schauen, ob du die neuste Version von Mono hast.
Gast #4291033
Hat jemand denn eine C# Anwendung mit mySql-Anbindung auf dem Raspberry 
am laufen und kann mir vielleicht sagen in welcher Reihenfolge und 
welche Versionen funktionieren?
Gast #4291084
ok danke dann bekomme ich folgende Meldungen:
Program.cs(2,7): error CS0246: The type or namespace name `MySql' could 
not be found. Are you missing an assembly reference?
Program.cs(11,10): error CS0246: The type or namespace name 
`MySqlDataReader' could not be found. Are you missing an assembly 
reference?
Program.cs(12,10): error CS0246: The type or namespace name 
`MySqlConnection' could not be found. Are you missing an assembly 
reference?
Program.cs(13,10): error CS0246: The type or namespace name 
`MySqlCommand' could not be found. Are you missing an assembly 
reference?
Gast #4291121
using System;
using MySql.Data.MySqlClient;

namespace MySQLReadWrite
{
  class Program
  {

    static MySqlDataReader Reader;
    static MySqlConnection connection = null;
    static MySqlCommand command;

    static void Main(string[] args)
    {
      init();

      int value = 0;

      //Endlosschleife
      while (true)
      {

        if (value==0)
        {
          value = 1;
        }
        else
        {
          value = 0;
        }

        writeTable_SerialInput(value);
        ReadTable_SerialOutput ();
        readSerialPort();

        System.Threading.Thread.Sleep(5000);
        Console.WriteLine(DateTime.Now.ToString());
      }
    }

    private static void init()
    {
      try
      {
        string myConnectionString = "SERVER=192.168.178.38;" +
          "PORT=3306;"+
          "DATABASE=xxx;" +
          "UID=xxx;" +
          "PASSWORD=xxx;";

        connection = new MySqlConnection(myConnectionString);
        command = connection.CreateCommand();
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.ToString());
      }
    }

    private static void ReadTable_SerialOutput()
    {
      try
      {
        command.CommandText = "SELECT * FROM Serial_input";
        connection.Open();
        Reader = command.ExecuteReader();

        while (Reader.Read())
        {
          string row = "";
          for (int i = 0; i < Reader.FieldCount; i++)
          {
            row += Reader.GetValue(i).ToString() + ", ";
            Console.WriteLine(row);
          }
        }
        connection.Close();
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.ToString());
      }
    }

    /// <summary>
    /// Schreibt die gelesenen Werte von der seriellen Schnittstelle in 
die Datenbank
    /// </summary>
    /// <returns></returns>
    private static void writeTable_SerialInput(int value)
    {
      try
      {
        string sqlFormattedDate = DateTime.Now.ToString("yyyy-MM-dd 
HH:mm:ss");
        string myInsertQuery = "INSERT INTO Serial_input (Alarm, Datum, 
Kommentar)  Values(" + value + ",'" + sqlFormattedDate + "', 'test')";
        command = new MySqlCommand(myInsertQuery);
        command.Connection = connection;
        connection.Open();
        command.ExecuteNonQuery();
        command.Connection.Close();
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.ToString());
      }
    }

    private static void readSerialPort()
    {

    }
  }
}
Gast #4291143
Compiler aufruf:
dmcs Program.cs -r:MySql.Data.dll -r:System.dll -r:System.Data.dll

dann kommt:

warning CS8001: SDK path could not be resolved
error CS0009: Metadata file `/home/pi/ReadSerialPort/System.Data.dll' 
does not contain valid metadata
Compilation failed: 1 error(s), 1 warnings
Gast #4291157
geht bei mir unter Debian mit mono

dmcs test.cs -r:MySql.Data.dll -r:System.Data

musste nur die Zeile mit dem SerialPort auskommentieren.

habe nur die MySql.Data.dll noch mit ins verzeichniss gelegt.
Gast #4291186
bass schrieb:
> Ich habe die .exe und die MySql.Data.dll System.Data.dll auf den
> Raspberry kopiert.
>
> Wenn ich die exe mit #mono test.exe starte erhalte ich folgenden Fehler:

Warum arbeitest du überhaupt mit C# wenn das Zielsystem ein Linux ist? 
Mit Python würde es wahrscheinlich längst laufen.
Gast #4291197
Karl schrieb:
> Warum arbeitest du überhaupt mit C# wenn das Zielsystem ein Linux ist?
> Mit Python würde es wahrscheinlich längst laufen.

es gibt halt Leute die wert auf Typsicherheit legen. Und sich nicht mit 
scripten beschäftigen wollen.

Ich kann es nachvollziehen.
Gast #4291307
bass schrieb:
> Welche Versionen hast du denn von MySql.Data.dll und System.Data???

MySql.Data.dll aktuelle aus dem Netz
System.Data keine Ahnung, mono ist bestimmt schon 1 Jahr alt.

Hast du etwa die System.Data mit hin kopiert?

Bei mir ist es aber ein normales x68 System, kein rpi.
Gast #4291349
Aber nochmal zurück mit welcher Sprache sollte man den auf dem Pi 
programmieren ??? C,C++ Phyton was ist am gängigsten? Habe beruflich 
halt viel mit C# zu tun...
Gast #4291362
bass schrieb:
> Aber nochmal zurück mit welcher Sprache sollte man den auf dem Pi
> programmieren ??? C,C++ Phyton was ist am gängigsten? Habe beruflich
> halt viel mit C# zu tun...

dann würde ich auch bei C# bleiben, üblich ist es aber nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.