(C#) mariadb MySql Verbindung Fehler?
Moin,
einmal vorweg, es lief einmal. Nach einem Update auf der Datenbank dann aber nicht mehr...
string server = "xxx.xxx.xxx.xxx";
string database = "test2";
string uid = "root";
string password = "PASSWORT";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";SslMode=none;";
con = new MySqlConnection(connectionString);
Das ist der Connection String - das Passwort ist natürlich nicht "PASSWORT" und die IP-Adresse ist natürlich auch anders, aber passt.
Ich möchte nun einfach Daten empfangen;
var com = new MySqlCommand("SELECT * FROM levels", con);
con.Open();
var reader = com.ExecuteReader(); << Error
Jedoch springt er beim ExecuteReader(); mit folgender Meldung heraus;
"The given key '8704' was not present in the dictionary."
Habe bereits versucht eine andere Datenbank aufzusetzen - gleicher Fehler mit einem anderen Key.
So sieht eigentlich die Tabelle aus - eine Zeile ist eingefügt. Wie gesagt, es ging einmal - nachdem ich den Datentyp von INT zu BIGINT geändert hatte ging es dann nicht mehr (natürlich bringt das Zurücksetzen auch nichts, habe ja auch mit mehreren Datenbanken getestet).
Die NuGet ist auch Up-To-Date.
Ich verzweifle leider daran - hat jemand eine Idee, woran es liegen könnte?
LG
Austausch von MySql.Data durch MySqlConnector hats getan...
War zwar vorher aktuell aber scheint dennoch veraltet oder kaputt zu sein... Dabei war der letzte Push am 20.07.2021...
2 Antworten
was mir auffällt, ist das:
";SslMode=none;";
Die Strichpunkte.
Es SOLLTEN so gehen, ja.
Doch ich habe zuweilen Probleme gehabt mit 'kein Blank' und Strichpunkt am Ende des Statements in irgendwelcher meiner zahllosen SQL Zugriffe und Editoren.
Laut https://stackoverflow.com/questions/20162761/amazing-error-the-given-key-was-not-present-in-the-dictionary und https://stackoverflow.com/questions/41930040/net-mysql-error-the-given-key-was-not-present-in-the-dictionary könnte es an dem ConnectionString oder einer nicht aktuellen dll liegen ;D
Versuch am besten mal, den ConnectionString anzupassen
Uff :D
Ich weiß nicht wie Umfangreich dein Projekt wird, aber vlt. wäre auch EF Core ne Überlegung wert ;)
Mit EF habe ich mich leider noch nicht genug auseinandergesetzt - ggf. in einem Update. Das Projekt wird laufend vergrößert.
Ist ein Discord Bot - die Datenbank soll lediglich die XP und Level abspeichern. So der Plan, bis mir dann das entgegen kam.
Warum eigentlich MySQL/MariaDB? So wie ich gehört habe, ist das schon lange nicht mehr wirklich zu gebrauchen.
Und bezüglich EFCore (nicht mit EF verwechseln):
Wenn dein Projekt laufend vergrößert wird und Du noch einen Überblick hast, solltest Du lieber früher als später umsteigen ;) EFCore kann dir viel Arbeit abnehmen, aber je länger Du wartest, desto schwieriger wird der Umstieg.
Es werden einfache SELECTs und ein paar INSERT INTOs - nichts großes, deshalb brauchte ich auch nichts großes.
EF (Core) nutze ich ggf. bei einem anderen Projekt. Bei so einem Bot ist das so völlig ausreichend. Da beziehe ich ja nur eine Handvoll Daten.
MySQL mit MariaDB war einfach am einfachsten zu nutzen für mich und am günstigsten. Außerdem ist MySQL eben nicht File-Based wie z.B. SQLite, welches meine erste Idee war.
Bin jetzt nach gut drei Stunden drauf gekommen, mal von MySql.Data wegzugehen und mit MySqlConnector auszutauschen...
Siehe da, es läuft auf anhieb... *Peng* x)
(Sowas kommt natürlich immer kurz darauf, wenn man eine Frage stellt. Jedes Mal. x) )
Hatte auch am ConnectionString hatte ich auch herumgedreht und das CharSet übergeben. Hatte leider keinen Erfolg damit.
Die dll ist aktuell und wurde häufiger heruntergeladen. Aber scheint im Vergleich recht kaputt zu sein.
Naja. Läuft jetzt...
Danke dir trotzdem!