Probleme mit dem Erstellen der Tabellen in der MySQL-Datenbank



  • Ich habe ein großes Problem beim Erstellen meiner Tabellen:

    Die Fehlermeldungen:

    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 "projekttesten'.'account' ('Id' int(10) unsigned NOT NULL auto-increment,'Userna'at line 1
    
    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 "projekttesten'.'bank_account' ('Id' int(10) unsigned NOT NULL auto-increment,'U'at line 1
    
    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 "projekttesten'.'bookings' ('Id' int(10) unsigned NOT NULL auto-increment,'Usern'at line 1
    

    Der entsprechende Quellcode an der Stelle:

    CDbManager i;
    	i.Connect("projekttesten");
    
    	std::string query;
    
    	query = "CREATE TABLE  'projekttesten'.'account' ('Id' int(10) unsigned NOT NULL auto_increment,'Username' varchar(45) NOT NULL default '','Password' varchar(45) NOT NULL default '','Question' varchar(45) NOT NULL default '','Answer' varchar(45) NOT NULL default '',PRIMARY KEY  ('Id')) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    	query = "CREATE TABLE  'projekttesten'.'bank_account' ('Id' int(10) unsigned NOT NULL auto_increment,'Username' varchar(45) NOT NULL default '','AccountNumber' varchar(45) NOT NULL default '','AccountBalance' varchar(45) NOT NULL default '',PRIMARY KEY  ('Id')) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    	query = "CREATE TABLE  'projekttesten'.'bookings' ('Id' int(10) unsigned NOT NULL auto_increment,'Username' varchar(45) NOT NULL default '','Name' varchar(45) NOT NULL default '','UserAccount' varchar(45) NOT NULL default '','Amount' varchar(45) NOT NULL default '','Date' DATE NOT NULL,'Purpose' varchar(255) NOT NULL default '','Type' varchar(2) NOT NULL default '','Category' int(2) unsigned NOT NULL,PRIMARY KEY  ('Id')) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    

    Das Schema habe ich eigentlich mit dem QueryBrowser erstellt.



  • Ich hatte vorher der DB einen anderen Namen gegeben. Da lief es und die Tabellen wurden erstellt. Muss ich nach der Umbenennung das alte Schema entfernen?



  • Beim Erstellen der .exe erhalte ich folgende Warnung:

    LINK : warning LNK4075: /EDITANDCONTINUE wird aufgrund der Angabe von /INCREMENTAL:NO ignoriert
    

    Hat das vielleicht was damit zu tun?



  • Lass mal die ' weg, zumindest um die Tabellen- und Spaltennamen.
    Und ich schieb dich mal ins passende Forum.

    Die Warnung hat nix mit Mysql zu tun. Im Prinzip ist sie nicht böse, ich weiß gerade nicht, was sie aussagt, aber im Normalfall kann man sie ignorieren. 😉



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • estartu schrieb:

    Lass mal die ' weg, zumindest um die Tabellen- und Spaltennamen.
    Und ich schieb dich mal ins passende Forum.

    Die Warnung hat nix mit Mysql zu tun. Im Prinzip ist sie nicht böse, ich weiß gerade nicht, was sie aussagt, aber im Normalfall kann man sie ignorieren. 😉

    Würde sie ja auch gerne ignorieren, aber meine Tabellen werden nun mal nicht erstellt. Das ist das Problem.



  • Habe die '' mal rausgenommen, außer dort, wo kein Name dazwischen steht.

    Der Code sieht also wiefolgt aus:

    query = "CREATE TABLE  projekttesten.account (Id int(10) unsigned NOT NULL auto_increment,Username varchar(45) NOT NULL default '',Password varchar(45) NOT NULL default '',Question varchar(45) NOT NULL default '',Answer varchar(45) NOT NULL default '',PRIMARY KEY  (Id)) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    	query = "CREATE TABLE  projekttesten.bank_account (Id int(10) unsigned NOT NULL auto_increment,Username varchar(45) NOT NULL default '',AccountNumber varchar(45) NOT NULL default '',AccountBalance varchar(45) NOT NULL default '',PRIMARY KEY  (Id)) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    	query = "CREATE TABLE  projekttesten.bookings (Id int(10) unsigned NOT NULL auto_increment,Username varchar(45) NOT NULL default '',Name varchar(45) NOT NULL default '',UserAccount varchar(45) NOT NULL default '',Amount varchar(45) NOT NULL default '',Date DATE NOT NULL,Purpose varchar(255) NOT NULL default '',Type varchar(2) NOT NULL default '',Category int(2) unsigned NOT NULL,PRIMARY KEY  (Id)) ENGINE=InnoDB DEFAULT CHARSET=latin1";
    	i.Query(query);
    

    Es erscheinen keine Fenster beim Erstellen der Tabellen und sie tauchen auch in der DB auf, aber dafür schlägt die Registrierung fehl. Das Programm sagt mir, dass der Benutzer bereits existiert. Dies tut er aber nicht. Er gibt die Meldung bei jedem beliebigen Namen aus.

    Hier der Code dazu:

    CDbManager i;
    	i.Connect("projekttesten");
    	char query[255];
    	sprintf(query, "select * from account where username='%s'", mUsername);
    	i.Query(query);
    	if (i.GetRowCount() > 0) // Benutzername existiert schon
    	{
    		// MessageBox, wenn der Benutzername schon existiert
    		AfxMessageBox("Benutzername existiert bereits!\nBitte wählen Sie einen anderen Namen!");
    		// springt in das entsprechende Feld
    		GotoDlgCtrl(GetDlgItem(IDC_EDIT_USERNAME));
    	}
    	else
    	{
    		// Benutzer in der DB registrieren
    		sprintf(query, "insert into account (Username, Password, Question, Answer) values ('%s','%s','%s','%s')", mUsername, mPassword, mQuestion, mAnswer);
    		if (i.Query(query))
    		{
    			// MessageBox bei erfolgreicher Registrierung
    			AfxMessageBox("Benutzer wurde erfolgreich registriert!");
    			i.Disconnect();
    			EndDialog(0);
    			CMainDlg dlg;
    			dlg.DoModal();
    			return;
    		}
    	}
    	i.Disconnect();
    }
    


  • Kann es vielleicht an der "libmysql.lib" liegen? Wenn ich Sie nicht im Projektordner liegen habe, dann erscheint beim Erstellen diese Fehlermeldung:

    Linker-Vorgang läuft...
    LINK : fatal error LNK1181: Eingabedatei "libmysql.lib" kann nicht geoeffnet werden
    Fehler beim Ausführen von link.exe.
    

Log in to reply