Problem mit Tabellen erstellung | SQLite

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Community,


    Da ich mein Skript auf SQLite umschreibe und er eine Tabelle erstellt, die andere aber nicht.
    Hier der Code:

    Spoiler anzeigen


    DATA = db_open("database.db3");

    new query[1280];

    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `user` (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT NOT NULL , key TEXT NOT NULL , Reg_IP TEXT NOT NULL , Reg_GPCI TEXT NOT NULL , Last_IP TEXT NOT NULL");
    format(query, sizeof(query), "%s , Last_GPCI TEXT NOT NULL , Level INTEGER NOT NULL , Respekt INTEGER NOT NULL , Perso INTEGER NOT NULL , Mute INTEGER NOT NULL , Geld INTEGER NOT NULL , Adminlevel INTEGER NOT NULL", query);
    format(query, sizeof(query), "%s , Fraktion INTEGER NOT NULL , Frak-Rang INTEGER NOT NULL , Kills INTEGER NOT NULL , Death INTEGER NOT NULL , PayDay INTEGER NOT NULL , PayBonus INTEGER NOT NULL , Tutorial INTEGER NOT NULL", query);
    format(query, sizeof(query), "%s , HAUSNR INTEGER NOT NULL , Skin INTEGER NOT NULL , Sex INTEGER NOT NULL , Radio INTEGER NOT NULL , Remote INTEGER NOT NULL , Health REAL NOT NULL , Baned INTEGER NOT NULL", query);
    format(query, sizeof(query), "%s , Timeban INTEGER NOT NULL)", query);
    db_query(DATA, query); // Wird nicht erstellt

    Spoiler anzeigen
    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `handy` (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT NOT NULL , Handymodel INTEGER NOT NULL , Guthaben INTEGER NOT NULL , TelefonBuch INTEGER NOT NULL");
    format(query, sizeof(query), "%s , Nummer TEXT NOT NULL , SMS_0 TEXT NOT NULL , SMS_1 TEXT NOT NULL , SMS_2 TEXT NOT NULL , SMS_3 TEXT NOT NULL , SMS_4 TEXT NOT NULL)", query);
    db_query(DATA, query); // Wird erstellt


    Nur ich finde bei "user" keinen Syntax Fehler und die Länge des Strings passt auch(getestet durch print(...);).
    Könnt ihr etwas finden?


    Gruß, Piet

  • @[PA]Piet_Meier: Du machst den Fehler, dass du den String wieder formatierst, das heißt, das was du zuvor in den String packst wird überschrieben.
    Nutze am besten strcat,.


    Beispiel:

    new query[364],mquery[1280];

    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `user` (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT NOT NULL , key TEXT NOT NULL , Reg_IP TEXT NOT NULL , Reg_GPCI TEXT NOT NULL , Last_IP TEXT NOT NULL");
    strcat(mquery,string),strdel(query,0,sizeof(query));
    format(query, sizeof(query), "%s , Last_GPCI TEXT NOT NULL , Level INTEGER NOT NULL , Respekt INTEGER NOT NULL , Perso INTEGER NOT NULL , Mute INTEGER NOT NULL , Geld INTEGER NOT NULL , Adminlevel INTEGER NOT NULL", query);
    strcat(mquery,string),strdel(query,0,sizeof(query));
    format(query, sizeof(query), "%s , Fraktion INTEGER NOT NULL , Frak-Rang INTEGER NOT NULL , Kills INTEGER NOT NULL , Death INTEGER NOT NULL , PayDay INTEGER NOT NULL , PayBonus INTEGER NOT NULL , Tutorial INTEGER NOT NULL", query)
    strcat(mquery,string),strdel(query,0,sizeof(query));;
    format(query, sizeof(query), "%s , HAUSNR INTEGER NOT NULL , Skin INTEGER NOT NULL , Sex INTEGER NOT NULL , Radio INTEGER NOT NULL , Remote INTEGER NOT NULL , Health REAL NOT NULL , Baned INTEGER NOT NULL", query);
    strcat(mquery,string),strdel(query,0,sizeof(query));
    format(query, sizeof(query), "%s , Timeban INTEGER NOT NULL)", query);
    strcat(mquery,string),strdel(query,0,sizeof(query));
    db_query(DATA, mquery); // Wird nicht erstellt


    Noch richtig einrücken, dann müsste es klappen, das selbe machst du noch mit dem zweiten Query

  • weil ich mir denken könnte, das es für die erste zu groß ist.



    Geht Leider auch nicht. ;(


    /edit:
    Das wird ausgeprintet:

    SQL
    CREATE TABLE IF NOT EXISTS `user` (id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT NOT NULL , key TEXT NOT NULL , Reg_IP TEXT NOT NULL , Reg_GPCI TEXT NOT NULL , Last_IP TEXT NOT NULL , Last_GPCI TEXT NOT NULL , Level INTEGER NOT NULL , Respekt INTEGER NOT NULL , Perso INTEGER NOT NULL , Mute INTEGER NOT NULL , Geld INTEGER NOT NULL , Adminlevel INTEGER NOT NULL , Fraktion INTEGER NOT NULL , Frak-Rang INTEGER NOT NULL , Kills INTEGER NOT NULL , Death INTEGER NOT NULL , PayDay INTEGER NOT NULL , PayBonus INTEGER NOT NULL , Tutorial INTEGER NOT NULL , HAUSNR INTEGER NOT NULL , Skin INTEGER NOT NULL , Sex INTEGER NOT NULL , Radio INTEGER NOT NULL , Remote INTEGER NOT NULL , Health REAL NOT NULL , Baned INTEGER NOT NULL , Timeban INTEGER NOT NULL)
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Mal überprüft ob dein Query nicht zu kurz ist?


    Einfach mal print(query);
    dann siehst du ja ob was fehlt

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski