Fehler in mysql (Sql Syntax)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
beispiel
code
datenbank
fortlaufende zahl
generator
list
reihe
sinn
spalte
spalten
statement
tabelle
tag
test
testen
text
url
zahl
zeile
-
Hallo,
kann mir jemand sagen, wie man folgenden Fehler behebt:
MySQL meldet:
#1054 - Unknown column '0' in 'field tag/list">list'
In
INSERT INTO `test` ( `test1` ) VALUES ( `0` , `1` , `2` , `3` , `4` , `5` , `6` , `7` , `8` , `9` , `10` , `11` , `12` , `13` , `14` , `15` , `16` , `17` , `18` , `19` , `20` , `21` , `22` , `23` , `24` , `25` , `26` , `27` , `28` , `29` , `30` , `31` , `32` , `33` , `34` , `35` , `36` , `37` , `38` , `39` , `40` , `41` , `42` , `43` , `44` , `45` , `46` , `47` , `48` , `49` , `50` , `51` , `52` , `53` , `54` , `55` , `56` , `57` , `58` , `59` , `60` , `61` , `62` , `63` , `64` , `65` , `66` , `67` , `68` , `69` , `70` , `71` , `72` , `73` , `74` , `75` , `76` , `77` , `78` , `79` , `80` , `81` , `82` , `83` , `84` , `85` , `86` , `87` , `88` , `89` , `90` , `91` , `92` , `93` , `94` , `95` , `96` , `97` , `98` , `99` ); MySQL meldet: #1054 - Unknown column '0' in 'field list'
Der Tabellenname ist "test", der Spaltenname ist "test1", die soll ganz einfach mal mit Beispielwerten gefüllt werden... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
du machst zu viele werte in eine reihe:
INSERT INTO tbl_name (a,b,c)
VALUES (1,2,3),(4,5,6),(7,8,9); -
Mit den Backticks
werden bei MySQL Namen von Spalten oder Tabellen gekennzeichnet. Deswegen geht MySQL davon aus, das es sich bei der "0" um eine Spalte handelt.`
Zahlen-Werte kannst du ohne irgendwelche Anführungszeichen in dein Statement einbauen. Für Strings verwendet man i.d.R einfache Anführungszeichen
.'
Dein SQL-Statement müsste also folgendermaßen aussehen:
INSERT INTO `test` ( `test1` ) VALUES ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 );
(Vorausgesetzt deine Tabelle hat wirklich 100 Spalten …) -
thomasba schrieb:
(Vorausgesetzt deine Tabelle hat wirklich 100 Spalten …)
Da wird dann wohl der Fehler sein.. Eigentlich möchte ich die Einträge ja erzeugen... Spalte Name ist "test1", dann sollte er jede Zahl als Eintrag generieren...
Echt ich glaub das nicht, mehrere 1000 Code Zeilen in zwei Tagen und dann scheitert es an einem Simplen SQL Befehl -.- Das is der Nachteil, wenn man für alles eine fertige Methode benutzt...
Beitrag zuletzt geändert: 8.11.2012 9:21:36 von kill-a-teddy -
Hätte ich vorhin genauer gelesen … war wohl zu früh …
Wie der raubritta schon geschrieben hat, kann man mit einem Statement auch mehrere Zeilen in eine Tabelle einfügen. Diese Zeilen muss man dann allerdings mit Kommata getrennt angeben.
INSERT INTO `test` ( `test1` ) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30), (31), (32), (33), (34), (35), (36), (37), (38), (39), (40), (41), (42), (43), (44), (45), (46), (47), (48), (49), (50), (51), (52), (53), (54), (55), (56), (57), (58), (59), (60), (61), (62), (63), (64), (65), (66), (67), (68), (69), (70), (71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90), (91), (92), (93), (94), (95), (96), (97), (98), (99);
Pro Klammerung wird hier eine neue Zeile eingefügt, innerhalb der Klammern müssen jeweils alle angegebenen Spalten abgedekt werden. -
nur eine Spalte ???
... dann musst du die Klammer um jede Zahl machen
INSERT INTO `test` ( `test1` ) VALUES (0), (1), (2), (3), (4), (5), ... usw. ...
aber ... fortlaufende Zahl in nur eine Spalte ???
... da frag ich mal lieber nicht "warum?"
... oder nach dem "Sinn" ... :O ... EDIT: oh, da war wohl einer schneller :)
Beitrag zuletzt geändert: 8.11.2012 9:31:36 von wmag -
wmag schrieb:
nur eine Spalte ???
... dann musst du die Klammer um jede Zahl machen
INSERT INTO `test` ( `test1` ) VALUES (0), (1), (2), (3), (4), (5), ... usw. ...
aber ... fortlaufende Zahl in nur eine Spalte ???
... da frag ich mal lieber nicht "warum?"
... oder nach dem "Sinn" ... :O ... EDIT: oh, da war wohl einer schneller :)
Der Sinn ist der Weltweit erste "Mysql Dummy Text- Generator" ^^ Ich hab hier öfters mal Projekte, die ich natürlich auch testen muss.. Wenn ich zum Beispiel eine Suchfunktion einbaue, dann sollte sie auch richtig funktionieren, um Bugs vorher zu finden und zu killen sollte man das dann schon mal ausgiebig getestet haben, aber ich hab nie wirklich Bock die ganzen Einträge zu machen.... Deshalb bau ich einen Generator dafür :) -
achso,
weil mir das komisch vorkam,
denn mit einer DB-Tabelle will man ja was "zuordnen" wie ID --> Name
aber mit einer Spalte kann ja schlecht was zugeordnet werden
also (schätze ich mal) DU willst mit dem Teil testen,
ob der MySQL INSERT Befehl funktioniert ? ...
... das könnte man doch aber auch mit nur einer Zeile genauso testen
wenn es darum geht, zu Testen, wieviele "gleichzeitige" INSERTs möglich sind,
dass sollte man doch evtl. mehr Daten als 1, 2, 3, 4, 5, ... nehmen,
denn wenn jede Zeile der "echten" Daten auch viele Zeichen / Bytes enthalten,
könnte ja Problem bei sowas wie max_execution_time oder memory_limit oder ... auftreten
Also wenn mit VALUES 1, 2, 3,... bis zu 1000 INSERTS gleichzeitig funktionieren,
dann ist nicht garantiert, das es auch mit 1000 Artikeln (mit viel Text) funktioniert.
oder geht es beim Testen um was ganz anderes? .... -
wmag schrieb:
achso,
weil mir das komisch vorkam,
denn mit einer DB-Tabelle will man ja was "zuordnen" wie ID --> Name
aber mit einer Spalte kann ja schlecht was zugeordnet werden
oder geht es beim Testen um was ganz anderes? ....
Ja das mit der id ist mir klar, wofür die ist. Aber beispielsweise hat man für ein CMS auch andere id's, wie zum Beispiel "post_id" oder sonst was. Da kann man dann eine id generieren, per Zufall oder der Reihe nach.
Mittels einem DropDown kann man dann ganz bequem auswählen, was generiert werden soll. Das ganze wird dann in die Datenbank eingetragen, damit man nicht alle Einträge von hand schreiben muss.
Hier mal ein Beispiel zur Veranschaulichung: Bild
Am Ende soll das Ding also nichts weiter machen, als eine Datenbank mit Beispieldaten zu füttern, nur für Testzwecke... -
Der Umgang mit INSERT und vieles mehr steht doch eigentlich im MySQL Handbuch ausführlich beschrieben. Einfach danach googeln "INSERT MySQL".
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage