MySQL CREATE DATABASE schmiert ab



  • Hallo
    ich habe folgenden Code unter VS 2008 C++

    void Cmysql_testDlg::OnBnClickedButton1()
    {
    CString fehler;
    const char *fehler_char;
    MYSQL *my;
    char *def_host_name;
    char *def_user_name;
    char *def_passwort;
    char *def_db_name;
    char *SQL_query;
    
    def_host_name="localhost";
    def_user_name="root";
    def_passwort="admin";
    def_db_name="test";
    
    my = mysql_init(NULL);
    if(my == NULL) {
       AfxMessageBox(_T("Fehler init"));
    }
    /// Wenn ich das rausnehme schmiert das teil ab
    if( mysql_real_connect (
            my,            /* Zeiger auf MYSQL-Handler */
            def_host_name, /* Host-Name */
            def_user_name, /* User-Name */
            def_passwort,  /* Passwort für user_name */
            def_db_name,   /* Name der Datenbank */
            0,             /* Port (default=0) */
            NULL,          /* Socket (default=NULL) */
            0              /* keine Flags */  )  == NULL)
    {
    	fehler_char=mysql_error (my);
    	fehler=fehler_char;
    	MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
    }
    /// bis hier
    
    SQL_query="CREATE DATABASE IF NOT EXISTS saia";
    if (mysql_real_query(my,SQL_query,strlen(SQL_query)) != NULL)
    {
    	fehler=mysql_error (my);
    	MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
    }
    
    }
    

    das klappt soweit.
    Nur wenn ich den kompletten mysql_real_connect teil entferne schmiert die Routiene ab. Wie kann ich eine CREATE DATABASE machen ohne einen connect?
    Ich kann ja nicht davon ausgehen, dass die test Database da ist.
    Wenn ich dort die Database saia zu connecten versuche schmiert alles mit MYSQL server is gone away ab.

    Danke Holger



  • Soweit ich weiß, gibt es neben mysql_real_connect auch noch mysql_connect.
    Dieses erfordert neben nem zeiger auf MYSQL noch host, user und passwort.
    Damit brauchst du keine Datenbank angeben.
    Ich verwende dieses Schema bei der Installation von einigen PHP-Projekten.



  • sentinel.dd schrieb:

    Wie kann ich eine CREATE DATABASE machen ohne einen connect?

    Gar nicht. Du brauchst ja ein Connection-Handle um die Operationen an den Server zu senden. Du musst im Vorfeld sicherstellen dass die Datenbank erreichbar ist (sprich: Host/User/Password/Dbname muss alles korrekt sein).

    Wenn du eine Datenbank ohne Server brauchst, schau dir mal SQLite an.



  • @BasicMan01
    mysql_real_connect ist die richtige Funktion, mysql_connect ist deprecated

    @sentinel.dd
    Wie schon gesagt kannst du natürlich nur mit einem Datenbanksystem arbeiten mit dem du auch verbunden bist. Ein connect ist also unerlässlich. Setzt doch die DB bei connect einfach NULL, führe dann deine "CREATE DATABASE IF NOT EXISTS saia" aus und mach ein "USING saia"

    mfg
    xXx



  • -=]xXx[=- schrieb:

    mysql_connect ist deprecated

    Glaub ich dir gerne. Bei google hab ich dahingehend ab und zu auch in Ansaetzen
    was gefunden. Gibt es denn einen Ueberblick, welche Funktionen in welcher Version
    deprecated sind?
    Auf folgender Seite ist mysql_connect naemlich noch nicht als deprecated markiert.
    http://www.w3schools.com/php/php_ref_mysql.asp

    //Edit:
    Sorry, war zu schnell, habs gefunden
    http://dev.mysql.com/doc/refman/5.0/en/mysql-connect.html


Anmelden zum Antworten