Fehler beim Verbinden mit Datenbank

  • C#
  • .NET 1.0–3.1 (Core)

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von DTF.

    Fehler beim Verbinden mit Datenbank

    Guten Morgen :)

    Beim Ausführen hiervon:

    C#-Quellcode

    1. ​builder.Services.AddEntityFrameworkMySQL().AddDbContext<DBContext>(options =>
    2. {
    3. options.UseMySQL(builder.Configuration.GetConnectionString("DefaultConnection"));
    4. var app = builder.Build();
    5. // Configure the HTTP request pipeline.
    6. if (app.Environment.IsDevelopment())
    7. {
    8. app.UseSwagger();
    9. app.UseSwaggerUI();
    10. }
    11. app.UseHttpsRedirection();
    12. app.UseAuthorization();
    13. app.MapControllers();
    14. app.Run();
    15. });


    Bekomme ich diesen Fehler:

    System.IO.FileNotFoundException
    HResult=0x80070002
    Nachricht = Could not load file or assembly 'MySql.Data, Version=8.2.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'. Das System kann die angegebene Datei nicht finden.

    Kann mir jemand sagen, was falsch ist oder wo ich überhaupt suchen muss, um den Fehler zu finden?

    Das hier ist meine appsettings.json:

    XML-Quellcode

    1. {
    2. "Logging": {
    3. "LogLevel": {
    4. "Default": "Information",
    5. "Microsoft.AspNetCore": "Warning"
    6. }
    7. },
    8. "AllowedHosts": "*",
    9. "ConnectionStrings\": {": null,
    10. "DefaultConnection": "server=(localdb)\\MSSQLLocalDB;port=3306;user=root;password=;database=CustomerList"
    11. }


    Ich bin kompletter Neuling auf dem Datenbankgebiet, also ich fang wirklich bei 0 an.
    Also die MySql.Data.dll ist im Debug-Odner. Was hat es denn mit diesem Token auf sich?

    Vielleicht hilft das weiter:

    Ich probiere gerade, das hier nachzubauen:

    c-sharpcorner.com/article/rest-api-with-asp-net-6-and-mysql/

    Mein Gedanke ist, da ist was mit den Credentials in der appsettings.json falsch. Keine Ahnung wo ich Port, User und Passwort finden kann, ich hab diese nämlich nicht festgelegt...

    kafffee schrieb:

    Nachricht = Could not load file or assembly 'MySql.Data, Version=8.2.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'. Das System kann die angegebene Datei nicht finden.


    Der Thread wurde mit NET Core getagt, die MySql.Data DLL-Version 8.2.0.0 braucht aber mindestens Net 6.
    nuget.org/packages/MySql.Data/

    Also mindestens die aktuelle LTS Version von NET sollte man doch schon zum Entwickeln nehmen.

    PS @kafffee Kürzlich hattest du einen Thread mit SQL und ASP, was hast du jetzt für ein Backend?
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D
    @Haudruferzappeltnoch
    Ja hatte ich.

    Hab das Thema jetz ertsmal aufegegeben, @siycah hat mir ein nettes PHP-Skript geschrieben :)

    DTF schrieb:

    Kürzlich hattest du einen Thread mit SQL und ASP, was hast du jetzt für ein Backend?


    Wie gesagt, @siycah hat mir jetzt ein PHP Skript geschrieben für den Zweck

    Wusste nicht genau wie ich das Thema taggen soll, ich hab jedenfalls ASP.NEt Core verwendet und da gabs bloss diese Auswahlmöglichkkeit mit Core...

    Edit @DTF
    Warte jetzt bin ich selbst verwirrt: Also ich hab beim Erstellen ASP.NET Core gewählt dann aber. NET 8.0...

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

    @DTF

    Ich hatte selbst auch probiert, das Beispiel (Tutorial), was @kafffee verwendet hat, zu folgen, aber da fehlten einige Infos drin.

    Stattdessen habe ich relativ schnell und unkompliziert auf meinem Webserver mittels Yii eine Applikation gebaut, die die API-Endpunkte die aktuell zum Testen benötigt werden bereitstellt. Das werde ich dann wohl noch in Zukunft erweitern/warten oder so - mal schauen was noch kommt :)

    Der Klu war übrigens bei MySql.Data, dass man explizit die richtige Version nachinstallieren muss. Nimmt man die Standardpakete, wird 7.x.x installiert, was aber nicht korrekt funktioniert.
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.

    kafffee schrieb:

    Warte jetzt bin ich selbst verwirrt: Also ich hab beim Erstellen ASP.NET Core gewählt dann aber. NET 8.0...


    Also wegen deiner verwirrung. ASP = Active Server Pages, wenn du einen WIndows Server einsetzt kannst du damit eine Anwendung machen die darauf läuft. Wenn du eine Desktop App machen willst und nur eine Verbindung zur DB aufbauen musst, nimmste ein Net Projekt und verwendest den passensen Connector. Als ich das letzt mal eine App die auf MySQL zugreift gemacht hab, hatte ich keine Probleme mit dem Nuget Packet.

    kafffee schrieb:

    Hab das Thema jetz ertsmal aufegegeben


    Sowas macht man doch nicht. Hätte ich aufgegeben weil mir die Unreal Engine zu umfangreich ist und Beginner es am Anfang wirklich schwer haben, würde ich jetzt immer noch keiner Ahnung davon haben. Einfach probieren auch ohne Tutorial.

    siycah schrieb:

    aber da fehlten einige Infos drin.


    Ich hab da jetzt nicht reingeschaut, aber ich hab das Problem nicht. Hab jetzt zum testen ein Projekt erstellt, das Nuget Packet installiert, die Verbindung klappte. Mehr war nicht nötig:
    @kafffee Wenn du einen MySQL-Server laufen hast, probier einfach mal nur das Nuget Packet und diesen Code in einer WinForms oder WPF NET-Anwendung.(Installier das via Nuget Packet Manager im Studio)

    C#-Quellcode

    1. using MySql.Data.MySqlClient;
    2. namespace WinFormsApp4
    3. {
    4. public partial class Form1 : Form
    5. {
    6. public Form1()
    7. {
    8. InitializeComponent();
    9. }
    10. private void Form1_Load(object sender, EventArgs e)
    11. {
    12. string cs= @"server=localhost;userid=ichse;password=lassmichrein;database=la_database";
    13. MySqlConnection c = new MySqlConnection(cs);
    14. c.Open();
    15. }
    16. }
    17. }

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

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

    DTF schrieb:

    nimmste ein Net Projekt und verwendest den passensen Connector

    Was ist ein Connector genau? Wo bekomm ich diesen her? Auch ein Paket??

    DTF schrieb:

    Also wegen deiner verwirrung. ASP = Active Server Pages

    Jou was mich verwirrt hat: Ich wähle den Projekt-Typ ASP.Net Core, hab dann aber als Framework .NET 8.0, also ohne Core...


    DTF schrieb:

    Sowas macht man doch nicht. Hätte ich aufgegeben weil mir die Unreal Engine zu umfangreich ist und Beginner es am Anfang wirklich schwer haben, würde ich jetzt immer noch keiner Ahnung davon haben. Einfach probieren auch ohne Tutorial.

    Jo aufgeben ist auch nicht mein Ding, hab ich noch nie und hab letztenendes immer alles hinbekommen. Kann mich noch erinnern wie ich 2 Wochen an einer WPF Custom modalen MessageBox gearbeitet bis es erstmal ein Fenster angezeigt hat. Es sind ja meistens die Details... Bloss bei diesem Problem hier war das Tutorial vermutlich nicht fehlerfrei und selbst @siycah hat sich die Zähne ausgebissen... Zum Schluss waren wir durch zwei oder drei Fehler durch, dann hat sich das Programm, ohne eine Swagger Website anzuzeigen, kommentarlos mit Code 0 beendet und wir wussten nicht warum...
    Und ich hatte ja schon im Vorfeld viel probiert und zu, Debuggen hab ich noch zu wenig Ahnung von dieser Materie, v.A. hat man ja bei diesem Thema teilweise keine IntelliSense zur Verfügung, z.B. bei der Modifikation der appsettings.json z.B..

    DTF schrieb:

    Hab jetzt zum testen ein Projekt erstellt, das Nuget Packet installiert

    Sprechen wir von dem Paket MySQL.Data?

    DTF schrieb:

    probier einfach mal nur das Nuget Packet und diesen Code in einer WinForms oder WPF NET-Anwendung

    Mach ich :) Und ich wette das funktioniert sogar....
    Hast du denn den MySQL Server nicht eingerichtet? Was passiert wenn du die mysql.exe via Terminal(cmd.exe) startest? Der default user ist root. Ich dachte siycah hat dir ein wenig PHP Code gegeben, wenn du da DB zugriffe machst, musst du doch auch Username und Passwort angeben. Funktioniert das mit der DB nicht, also wenn der Prozess mysqld.exe nicht läuft und du nicht mit der mysql.exe aus dem Terminal heraus die DB nuzten kannst, bist du nicht bereit an den Start zu gehen.

    Also stell sicher das mysqld.exe(beachte das d am Ende) läuft. Dann Terminal auf, zum Bin Ordner der Installation navigieren, mysql.exe(diesmal ohne D am ende) starten und schauen was passiert. Kannst du dich nicht anmelden weil du wirklich kein Passwort hast, siehe hier, wie du für root ein Passwort setzen kannst.(Für windows ein wenig runter scrollen)
    phoenixnap.com/kb/how-to-reset…ot-password-windows-linux


    Ich weiss jetzt nicht wie du MySQL installiert hast, aber es gibt auch einen Installer bei dem du direkt beim Installieren ein Passwort für root festlegen kannst. Kommste mit MySQL nicht klar, nimm Postgre SQL. Da hast du eine klickibunti GUI.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    DTF schrieb:

    Hast du denn den MySQL Server nicht eingerichtet?

    Ne, den hat @siycah auf seinem Webhost eingerichtet. Den SQLServer, den ich lokal hab, hab ich über VS geaddet, aber da hab ich kein Username und Passowrt festgelegt... nur Wndows Authentifizierung...

    DTF schrieb:

    Was passiert wenn du die mysql.exe via Terminal(cmd.exe) startest?

    Ich kenn mich net so aus mit Kommandozeilen. Muss ich da vorher zu nem bestimmen Ordner navigieren?

    DTF schrieb:

    Ich dachte siycah hat dir ein wenig PHP Code gegeben, wenn du da DB zugriffe machst, musst du doch auch Username und Passwort angeben

    Wie gesagt das hat er serverseitig gemacht, keine Ahnung...
    Du kannst auch eine Batch-Datei anlegen und ausführen. Also cmd.exe starten zum verzeichniss der Installation von MySQL navigieren mit dem CD command, z.B foglende Zeilen eingeben. die mysqladmin.exe, mysql.exe und auch die mysqld.exe findest du dort.

    Quellcode

    1. D: //go to Volume d root
    2. cd Server/MySQL/Bin // go to mysql bin dir
    3. mysql.exe -u root -ppassword //das Passwort Ohne Leerzeichen hinter-p schreiben



    Du kannst aber auch die PATH Variable erweitern, dann sparste dir das Navigieren.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D
    Also hast du keinen MySQL Server am laufen? Das ist ein eigenständiger Prozess. Ich hab das bei mir als Windows-Service installiert. Wenn du lokal einen MySQL Server aufsetzen willst, lade dir die MySQL Community Edition herunter. Kannst dir auch ein Tutorialvideo anschauen. Wenn du dann soweit bist, das mysqld.exe läuft, du via Terminal die mysql.exe starten und dich einloggen kannst, lege eine Datenbnak an, geht dann im Terminal, aber falls du einen Webserver am laufen hast, lade dir PhpMyAdmin runter, da kannste dir die DB dann im Webbrowser zurechtklicken.

    Danach kannste dann mal Codeseitig probieren Werte auszulesen, Zeilen anzulegen, Datenbanken anzulegen etc......

    Ach ja, Connector sollte eindeutig sein. übersetz mal vom englischen ins deutsche. mysqld.exe ist die Serveranwendung selbst, mysql.exe deine konsolenanwendung für die Serveranwendung. Ein Connector in dem Fall ist dann deine Schnittstelle zur DB, wie die mysql.exe auch welche aber halt nur eine Konsolenanwendung ist.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DTF“ ()

    @DTF

    Guck mal ich hab im VS Server Explorer das hier im Anhang (v.a. das oben links in der TreeView). Das sieht für mich stark danach aus, dass ich da einen Server am Laufen hab, aber ich glaub da lieg ich falsch...
    Wenn ich denn mal auf Testverbindung klicke, kommt login failed.

    Dann muss ich mir das wohl doch runterladen...
    Bilder
    • server explorer.PNG

      47,33 kB, 1.006×886, 70 mal angesehen
    Ui, hier ist ja was passiert...

    @DTF Das sind wir gestern bereits durchgegangen, am Ende des Tages war es dann einfacher, anstatt lokal den Dienst zu installieren usw. das ganze bei mir auf dem Server zu hosten, wo bereits sämtliche Infrastruktur läuft.
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems

    Selbstständiger Softwareentwickler & IT-Techniker.

    kafffee schrieb:

    Guck mal ich hab im VS Server Explorer das hier im Anhang


    Ich sehe da SQL. SQL ist ungleich MySQL

    Da hast du irgendein SQL Server, aber kein MySQL. Schau im Taskmanager ob mysqld.exe läuft, wenn ja, root passwort anlegen und versuchen mit der mysql.exe einzuloggen. Nur wenn das geht, geht das auch mit dem Code den ich zeigte, ich brauch nicht mal den DB-Explorer. Ich denke du solltest einfach den MySQL Community installieren, beim installieren genau die Optionen prüfen. Ich meine da kannste direkt was wichtiges mit installieren, ich hab das alles selbst ins System integriert, daher kann ich dir nicht viel zum installer sagen, sollte es auch die Option geben den Server als Windows Dienst zu installieren, würde ich empfehlen das zu machen, dann startet der Dienst bei Windows-Start automatisch, ohne das du selbst was machen musst.
    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DTF“ ()

    @DTF

    Ah jetzt ja :)

    Edit @DTF:

    Sry wegen der verspäteten Antwort, hab die letzten Tage an meiner Projektwebsite gesessen :)

    Wie is das eigentlich?: Wenn ich jetzt eine App schreiben würde, die lokal auf eine Datenbank zugreift, also wirklich nur die DB als Datei, muss dann der User auch MySQL Community erst installieren bevor das läuft?

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