MySQL Verbindung nicht möglich -> Ein Objekt kann nicht von DBNull in andere Typen umgewandelt werden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    MySQL Verbindung nicht möglich -> Ein Objekt kann nicht von DBNull in andere Typen umgewandelt werden

    Hi, bei Google leider nix gefunden. Hab seit heute ein seltsames Problem festgestellt.
    Ich hab ein kleines Kassenprogramm programmiert, welches auf einen MariaDB-Server (Docker-Container auf meinem Homeserver) zugreift.
    Seit heute geht da nix mehr, obwohl ich weder am Programm noch sonst wo was geändert hab. Dachte trotzdem, dass es mit dem Code zusammenhängt...


    Wollte dann zu MS-SQL migrieren, mit dem SQL Server Migration Assistant bekomme ich dann allerdings den gleichen Fehler:

    Quellcode

    1. [Error: Gui] [18468/10] [2022-11-22 20:02:38]: Inner Exception #2: Ein Objekt kann nicht von DBNull in andere Typen umgewandelt werden.
    2. site: Int32 System.IConvertible.ToInt32(System.IFormatProvider)
    3. source: mscorlib
    4. bei System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider)
    5. bei Microsoft.SSMA.Framework.MySql.Collector.MySqlObjectCollector.AddCharsetsAndCollationsInfo(XMetabase xMetabase, IDbConnection connection, IMySqlQueryProvider queryProvider, IUIProgressBarProvider progressBarProvider)


    Vermute jetzt einen Bug bei MariaDB - ist das Einzige, was regelmäßig Updates bekommt (im Gegensatz zu dem Kassenprogramm). Hat das jemand schonmal gehabt? Gibt's da Abhilfe für?
    Also die Connection bekommt er aufgebaut, das Abrufen von Daten schmiert dann ab. Egal ob mit Root-User oder einem "normalen" Datenbankuser

    Quellcode

    1. Connection to MySQL established successfully.
    2. Connection string: Driver={MySQL ODBC 8.0 Unicode Driver};Server=192.168.178.250;Port=3306;User=root;Option=3
    3. Error occurred while collecting data.
    4. - Ein Objekt kann nicht von DBNull in andere Typen umgewandelt werden.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Welchen Wert hat zum Problemzeitpunkt Con?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    unmittelbar vorher:


    beim öffnen:


    Zugangsdaten/Passwörter in Bildern unkenntlich gemacht ~VaporiZed
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Ich war mal so frei und habe Deine Bilder modifiziert.
    Prüf doch mal in Deiner DB, ob ein DBNull-Werte darin gibt und setz da mal testweise was anderes ein. Denn wenn Du es zu MSSQL migrierst und der gleiche Fehler kommt, ist es eher ein Datenproblem als ein Datenanbindungsanbieterproblem.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    ob ein DBNull-Werte darin gibt

    Nö gibbet nicht, weil ich das bei keiner Spalte erlaube...
    Achso und danke für's Modifizieren - fand ich nicht wichtig, weil alles lokal bei mir läuft und das passwort zufällig generiert ist und nirgendwo anders benutzt wird ;)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    it sounds like your connection string is not correctly escaping the values (most likely, the password); you could try:

    C#-Quellcode

    1. var cs = new DbConnectionStringBuilder();
    2. cs["SERVER"] = server;
    3. cs["DATABASE"] = database;
    4. cs["UID"] = uid;
    5. cs["PASSWORD"] = password;
    6. var connectionString = cs.ConnectionString;


    MySQL connection throws null reference

    tragl schrieb:

    geht auch
    = es funktioniert problemlos oder es kommt das gleiche Problem?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    tragl schrieb:

    @Bluespide: geht auch mit mit folgendem ConnectionString: "server=192.168.178.250;user id=Kassetest;password=test;database=Kasse_test"


    Also ich finde bei den meisten MySQL connections strings das folgende Format: server=127.0.0.1;uid=root;pwd=12345;database=test
    Woher hast du user id und password?
    @Bluespide:

    Scheint er umzuwandeln. So steht's in meinem Code: Dts._sCon = $"Server=192.168.178.250; UID=Kassetest; password=test; Initial Catalog=Kasse_test;"
    Der Connection String von oben kam dann aus der Ausgabe der Connection selbst...
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Neu

    Ich hab grad mal bei der Testdatenbank die Tabellen geleert um sicher zu gehen, dass keine falschen Werte drin sind.
    Nochmal die Strukturen der einzelnen Tabellen überprüft - da gibt's nix, was DBNull erlauben würde - im DataSet ist auch keine Spalte
    drin, die das erlaubt....
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup: