Guten Abend,
Wie kann ich es machen das er nur eimal die tabellen erstellt..
stock CreateDatenbank()
{
new query[580];
//Account Datenbank
print("Datensätze wird erstellt.");
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
mysql_fquery(query);
return 1;
}
stock CreateBugTabelle()
{
new query[580];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `bugs` (`id` int(11) AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
mysql_fquery(query);
format(query, sizeof(query), "ALTER TABLE `bugs` ADD `name` varchar(255)");
mysql_fquery(query);
format(query, sizeof(query), "ALTER TABLE `bugs` ADD `bugtext` varchar(255)");
mysql_fquery(query);
return 1;
}
CreateTabelle geht immer wieder durch..
- Xtrats
- Geschlossen
- Erledigt
-
-
CREATE TABLE IF NOT EXISTS bedeutet das er nur eine anlegt wenn keine vorhanden ist.
-
ja aber er geht trozdem alle durch..
und gibt mir das in der log aus
[18:00:04] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'wantedpoints'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'playminutes'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'gesamtminutes'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'minutessincean'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'offflucht'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'knast'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'uhr'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'knasttime'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'perso'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'gehalt'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'fraksperre'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'housekey'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'renthousekey'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'kampfstyle'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'flugtime'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'fahrpunkte'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'banned'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'name'
[18:00:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1060) Duplicate column name 'bugtext' -
Das liegt daran, dass du immer wieder ALTER TABLE aufrufst.
Erstelle die Spalten gleich im CREATE TABLE Statement, dann passiert das nicht mehr.
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `bugs` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `bugtext` varchar(255), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); -
Danke...
hatte kolege gemachtehm @Jeffry
muss das dann also so?
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11),`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); -
Ja, nur musst du aufpassen, dass die Zeile nicht zu lang wird, sonst meckert der Compiler. Dann musst du es auf zwei format's aufteilen, also so:
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11),");
format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query); -
Beitrag von pierre65 ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Jeffry war schneller ^^ (). -
und was damit ?
mysql_fquery(query);
-
Das kommt danach.
-
und wieso ist da ein %s ?%s`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-
-
Damit das Query übernommen wird:
//Erster Teil:
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11),");
//Zweiter Teil, in "query" steht der erste Teil. An die Stelle von %s kommt jetzt, dadurch dass hinten "query" steht, der erste Teil rein, somit ist das ganze komplett.
format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query); -
also immer %s wenn ich ein neues format anfange ?
-
Hier ist eine Beschreibung zum "format" Befehl: [wiki]Format[/wiki]
Sollte dir der englische Artikel nichts bringen dann eventuell der deutsche: [wiki]Format_DE[/wiki]
Da ist eigentlich alles genau beschrieben.
Kurz: Format ersetzt %s durch einen String in diesem Fall "query". -
ich habe es jetzt so..
stock CreateDatenbank()
{
new query[580];
//Account Datenbank
print("Datensätze wird erstellt.");
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11),`Sex` int(11),`herkunft` varchar(128),`e-mail` varchar(128),`Alter` int(11),`muted` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`respect` int(11),`bargeld` int(11),`bank` int(11),`sponsorlevel` int(11),`crimes` int(11),`kills` int(11),`deaths` int(11),`arrested` int(11),`wanteddeaths` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`job` int(11),`paycheck` int(11),`jailed` int(11),`jailtime` int(11),`drugs` int(11),`day` int(11),`month` int(11),`leader` int(11),`member` int(11),`fmember` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`rank` int(11),`headvalue` int(11),`contracttime` int(11),`boxskill` int(11),`lawskill` int(11),`newsskill` int(11),`drugsskill` int(11),`local` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`team` int(11),`model` int(11),`regfertig` int(11),`carlic` int(11),`flylic` int(11),`boatlic` int(11),`fishlic` int(11),`gunlic` int(11),`lkwlic` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`motolic` int(11),`zig` int(11),`zigsucht` int(11),`cartime` int(11),`payday` int(11),`cdplayer` int(11),`wins` int(11),`alcoholperk` int(11),`drugperk` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`traderperk` int(11),`tutorial` int(11),`warnings` int(11),`mp3` int(11),`BadWordWarns` int(11),`zollpass` int(11),`spawn` int(11),`hauskasse` int(11),`mauled` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`neon` int(11),`married` int(11),`verheiratet` varchar(32),`wantedlevel` int(11),`wantedpoints` int(11),`playminutes` int(11),`gesamtminutes` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`minutessincean` int(11),`offflucht` int(11),`knast` int(11),`uhr` int(11),`knasttime` int(11),`perso` int(11),`gehalt` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s`fraksperre` int(11),`housekey` int(11),`renthousekey` int(11),`kampfstyle` int(11),`flugtime` int(11),`fahrpunkte` int(11),`banned` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
format(query, sizeof(query), "%s PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
mysql_fquery(query);
return 1;
} -
Diesen Teil hier darfst du nur einmal im letzten format nutzen:
, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;Entferne es aus den anderen.
-
also dann so ?
stock CreateDatenbank(){ new query[580]; //Account Datenbank print("Datensätze wird erstellt."); format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"); format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11),`Sex` int(11),`herkunft` varchar(128),`e-mail` varchar(128),`Alter` int(11),`muted` int(11)", query); format(query, sizeof(query), "%s`respect` int(11),`bargeld` int(11),`bank` int(11),`sponsorlevel` int(11),`crimes` int(11),`kills` int(11),`deaths` int(11),`arrested` int(11),`wanteddeaths` int(11)", query); format(query, sizeof(query), "%s`job` int(11),`paycheck` int(11),`jailed` int(11),`jailtime` int(11),`drugs` int(11),`day` int(11),`month` int(11),`leader` int(11),`member` int(11),`fmember` int(11)", query); format(query, sizeof(query), "%s`rank` int(11),`headvalue` int(11),`contracttime` int(11),`boxskill` int(11),`lawskill` int(11),`newsskill` int(11),`drugsskill` int(11),`local` int(11)", query); format(query, sizeof(query), "%s`team` int(11),`model` int(11),`regfertig` int(11),`carlic` int(11),`flylic` int(11),`boatlic` int(11),`fishlic` int(11),`gunlic` int(11),`lkwlic` int(11)", query); format(query, sizeof(query), "%s`motolic` int(11),`zig` int(11),`zigsucht` int(11),`cartime` int(11),`payday` int(11),`cdplayer` int(11),`wins` int(11),`alcoholperk` int(11),`drugperk` int(11)", query); format(query, sizeof(query), "%s`traderperk` int(11),`tutorial` int(11),`warnings` int(11),`mp3` int(11),`BadWordWarns` int(11),`zollpass` int(11),`spawn` int(11),`hauskasse` int(11),`mauled` int(11)", query); format(query, sizeof(query), "%s`neon` int(11),`married` int(11),`verheiratet` varchar(32),`wantedlevel` int(11),`wantedpoints` int(11),`playminutes` int(11),`gesamtminutes` int(11)", query); format(query, sizeof(query), "%s`minutessincean` int(11),`offflucht` int(11),`knast` int(11),`uhr` int(11),`knasttime` int(11),`perso` int(11),`gehalt` int(11)", query); format(query, sizeof(query), "%s`fraksperre` int(11),`housekey` int(11),`renthousekey` int(11),`kampfstyle` int(11),`flugtime` int(11),`fahrpunkte` int(11),`banned` int(11)", query); format(query, sizeof(query), "%s PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query); mysql_fquery(query); return 1;}hab das in der log
[20:03:05] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1064) 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 '`supporter` int(11),`donaterank` int(11),`registered` int(11),`Sex` int(11),`her' at line 1
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:03:06] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist -
Wenn du so viel nutzt, dann wäre es angemessener wenn du strcat anwendest.
-
Im ersten Query-Teil (erste Zeile) steht das noch drin, da muss es auch raus.
Im letzten Teil fehlt vor PRIMARY ein Komma. -
geht nicht
print("Datensätze wird erstellt.");
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
format(query, sizeof(query), "%s `supporter` int(11),`donaterank` int(11),`registered` int(11),`Sex` int(11),`herkunft` varchar(128),`e-mail` varchar(128),`Alter` int(11),`muted` int(11)", query);
format(query, sizeof(query), "%s `respect` int(11),`bargeld` int(11),`bank` int(11),`sponsorlevel` int(11),`crimes` int(11),`kills` int(11),`deaths` int(11),`arrested` int(11),`wanteddeaths` int(11)", query);
format(query, sizeof(query), "%s `job` int(11),`paycheck` int(11),`jailed` int(11),`jailtime` int(11),`drugs` int(11),`day` int(11),`month` int(11),`leader` int(11),`member` int(11),`fmember` int(11)", query);
format(query, sizeof(query), "%s `rank` int(11),`headvalue` int(11),`contracttime` int(11),`boxskill` int(11),`lawskill` int(11),`newsskill` int(11),`drugsskill` int(11),`local` int(11)", query);
format(query, sizeof(query), "%s `team` int(11),`model` int(11),`regfertig` int(11),`carlic` int(11),`flylic` int(11),`boatlic` int(11),`fishlic` int(11),`gunlic` int(11),`lkwlic` int(11)", query);
format(query, sizeof(query), "%s `motolic` int(11),`zig` int(11),`zigsucht` int(11),`cartime` int(11),`payday` int(11),`cdplayer` int(11),`wins` int(11),`alcoholperk` int(11),`drugperk` int(11)", query);
format(query, sizeof(query), "%s `traderperk` int(11),`tutorial` int(11),`warnings` int(11),`mp3` int(11),`BadWordWarns` int(11),`zollpass` int(11),`spawn` int(11),`hauskasse` int(11),`mauled` int(11)", query);
format(query, sizeof(query), "%s `neon` int(11),`married` int(11),`verheiratet` varchar(32),`wantedlevel` int(11),`wantedpoints` int(11),`playminutes` int(11),`gesamtminutes` int(11)", query);
format(query, sizeof(query), "%s `minutessincean` int(11),`offflucht` int(11),`knast` int(11),`uhr` int(11),`knasttime` int(11),`perso` int(11),`gehalt` int(11)", query);
format(query, sizeof(query), "%s `fraksperre` int(11),`housekey` int(11),`renthousekey` int(11),`kampfstyle` int(11),`flugtime` int(11),`fahrpunkte` int(11),`banned` int(11)", query);
mysql_fquery(query);habs jetzt so aber er zeigt in der log immer noch das
[20:06:43] [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1064) 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 '`supporter` int(11),`donaterank` int(11),`registered` int(11),`Sex` int(11),`her' at line 1
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:44] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist
[20:06:45] [ERROR] CMySQLQuery::Execute[CheckAccount] - (error #1146) Table 'samptest.accounts' doesn't exist -
In der ersten Zeile steht das Zeug immer noch drin.
Und du hast die letzte Zeile gelöscht, anstatt ein Komma hinzuzufügen.Nimm nochmal den Code aus deinem Post zuvor und schau dir nochmal an, was ich geschrieben habe.
Oder poste den Code so, dass man ihn lesen kann, nicht dass alles grün ist
-