MySql-Server

  • C#

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Hatori.

    MySql-Server

    'n Abend,
    muss ich bei MySql noch spezielle Sachen installieren, damit ein Programm damit läuft?
    Ich habe eine install.sql für mein Programm. Wenn ich die mit Workbench oder PhpMyAdmin importiere, läuft alles tadellos. Aus dem Programm heraus motzt es mich an, da wären Syntax-Fehler. Kann doch nur sein, dass da bei der MySql-Installation etwas fehlt.
    Grüße aus Berlin
    ---
    Kuroi Fenikkusu Kampfsportverein e.V.
    https://www.spandau-ninja.de
    Welches Programm motzt, VisualStudio? Was für Syntax Fehler meint es? In der Regel lügt die IDE nicht...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hi. @Hatori

    Ich hab schon lange kein SQL gemacht, aber prüfe bitte die Kodierung der Datei und der Datenbank.
    Danach, falls das Problem nicht gelöst ist, einmal die Dateigröße gegenüber der Datenbank (MySQL/DasDelphindingsie :) ) abgleichen.
    Es ist ja etwas am "fressen", scheint aber beim Hauptgang den "Parmesan" nicht zu mögen.
    Kann ich Perönlich nachvollziehen, Käsefüße-Käse... Naja, halt jeder nach seiner Fasson.

    Die Datenbank sollte aber keine "Vorlieben" haben, aber Vorgaben, und öft war das der Grund beim Importfehler.

    Ich würde dem/der/des imports.sql-Datei hersteller einmal Fragen, oder die Website suchen, vielleicht haben die auch ein so nettes Forum wir WIR hier im VB-Paradise...

    Verdammt, jetzt bin ich auf der Schleimspur ausgerutscht...

    @mrMo
    "Gib einem Menschen eine SQL-Datei und er/Sie/es füttert eine Datenbank. Gib Ihm ein Online-Forum, und er/sie/es füttert Alle Datenbanken." :whistling:

    oh, Voll vergessen: c.u. @all aus f... Hot Hamburg (Temperatur bezogen, nicht das was Ihr denkt, tststs)
    Also, nochmal langsam.
    Ich habe ein Programm geschrieben (Vereinsverwaltung). Die Datenbank in MySql hab ich erstellt. In Visual Studio läuft das ganze auch wunderbar. Wenn ich trickse und erst die Datenbank erstelle (mit Hilfe des erwähnten Dumps, ich habe es mit PHPMyAdmin und auch mit der Workbench versucht), läuft auch das veröffentlichte Programm einwandfrei. Das Problem ist, aus dem Programm heraus die Stored Procedures in der Datenbank zu erstellen. Ich hatte versuchsweise die mal aus dem Dump rausgenommen - die Tabellen werden korrekt erstellt. Sobald es aber zu den Prozeduren kommt, war es das. Ich kann aber keinem User sagen, mach die Dinger mal von Hand, die meisten Interessenten wissen nichtmal, was das ist (müssen sie ja auch nicht, deswegen holen sie sich ja fertige Software).
    Datenbank und Dump sind beide in UTF-8. Wie gesagt, importiere ich die Datei von Hand, ob mit PHPMyAdmin oder mit Workbench, wird sie klaglos gefressen, aus dem Programm heraus gehts einfach nicht.
    Grüße aus Berlin
    ---
    Kuroi Fenikkusu Kampfsportverein e.V.
    https://www.spandau-ninja.de
    Es wird ein Syntaxfehler bemängelt. Aber wie kann es aus dem Programm einen Syntaxfehler geben, wenn beim manuellen Import alles in Ordnung ist??

    C#-Quellcode

    1. if (MessageBox.Show("Die Datenbank wurde angelegt, jetzt noch die Tabellen.", "Setup", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
    2. {
    3. try
    4. {
    5. StreamReader mySr = new StreamReader(@"sql_dump_mysql_install.sql");
    6. string sqlCmd = mySr.ReadToEnd();
    7. string connString = Properties.Settings.Default.ConnString;
    8. MySqlConnection connTabellen = new MySqlConnection(connString);
    9. MySqlCommand cmdTabellen = new MySqlCommand(sqlCmd, connTabellen);
    10. connTabellen.Open();
    11. cmdTabellen.ExecuteNonQuery();
    12. connTabellen.Close();
    13. connTabellen.Dispose();
    14. mySr.Dispose();
    15. if (MessageBox.Show("Fertig, das Programm wird jetzt neu gestartet.", "Setup", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
    16. {
    17. Application.Restart();
    18. }
    19. }
    20. catch (IOException ex)
    21. {
    22. MessageBox.Show("Die Datei kann nicht gelesen werden: " + ex.Message);
    23. }

    Bis zum catch kommt es gar nicht. Ich hab mal versucht, die sql-Datei auf UTF-8 BOM zu kodieren, bringt aber nichts, wenn sie während der Installation gelesen werden soll, ist sie wieder UTF-8.
    Die Fehlermeldung sagt sowas:
    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
    --
    -- Prozeduren
    --
    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp' at line 1
    bei MySql.Data.MySqlClient.MySqlStream.ReadPacket()
    bei MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
    bei MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
    bei MySql.Data.MySqlClient.MySqlDataReader.NextResult()
    bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
    bei MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
    bei VereinsverwaltungUI.Forms.frmSetup.btnSaveUpdate_Click(Object sender, EventArgs e)
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    MySql ist v8.021, das NuGet-Paket MySql.Data ebenfalls. Ich weiß grad echt nicht weiter.
    Grüße aus Berlin
    ---
    Kuroi Fenikkusu Kampfsportverein e.V.
    https://www.spandau-ninja.de
    Versuch es mal indem du für den StreamReader Encoding.UTF8 festlegst. = new StreamReader(String, Encoding)
    Standart ist beim deutschen Windows Windows-1252.

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

    Hi. Ich nix mache diesa Se Kuh El...

    Ich bin wirklich nicht in der SQL-Welt, aber kann das irgendwie hier dran liegen?

    Hatori schrieb:

    cmdTabellen.ExecuteNonQuery();


    Schnell mal in der Mittagspause hier reingeschrieben. :)

    c.u. Joshi aus very Hot Hamburg
    Ok, hab ich versucht.

    C#-Quellcode

    1. StreamReader mySr = new StreamReader(@"sql_dump_mysql_install.sql", System.Text.Encoding.UTF8);

    Hat aber nichts geholfen. Konnte ich mir auch nicht vorstellen, wenn ich die Prozeduren aus dem Dump rausnehme, werden die Tabellen korrekt erstellt. Versucht hab ich es trotzdem, ich bin grad an einem Punkt, wo ich alles probiere, was mir gesagt wird ;)
    Grüße aus Berlin
    ---
    Kuroi Fenikkusu Kampfsportverein e.V.
    https://www.spandau-ninja.de

    Joshi schrieb:


    Ich bin wirklich nicht in der SQL-Welt, aber kann das irgendwie hier dran liegen?

    Hatori schrieb:

    cmdTabellen.ExecuteNonQuery();


    Wie gesagt, ohne die Prozeduren im Dump läuft es sauber durch, alle Tabellen werden angelegt wie es sein soll.
    Ich hab auch schon andere Delimiter versucht (Workbench machts mit ;; PHPMySqlAdmin machts mit $$), ich habs mit // und || versucht, immer dasselbe.

    EaranMaleasi schrieb:

    Benutz
    mal anstatt MySqlCommand die Klasse
    MySqlScript.

    Jaaaa ... so gehts.

    C#-Quellcode

    1. StreamReader mySr = new StreamReader(@"sql_dump_mysql_install.sql", System.Text.Encoding.UTF8);
    2. string sqlCmd = mySr.ReadToEnd();
    3. string connString = Properties.Settings.Default.ConnString;
    4. MySqlConnection connTabellen = new MySqlConnection(connString);
    5. MySqlScript cmdTabellen = new MySqlScript(connTabellen, sqlCmd);
    6. connTabellen.Open();
    7. cmdTabellen.Execute();
    8. connTabellen.Close();
    9. connTabellen.Dispose();
    10. mySr.Dispose();

    Danke sehr, ich war echt am Verzweifeln.

    Grüße aus Berlin
    ---
    Kuroi Fenikkusu Kampfsportverein e.V.
    https://www.spandau-ninja.de

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