2016-05-06 14 views
2

Ich habe Probleme mit sehr einfachem MySQL-Code, daher verstehe ich etwas sehr fundamentales falsch. Dieser super einfache Code ist ein gutes Beispiel:Sehr einfacher MySQL-Code funktioniert nicht

CREATE TEMPORARY TABLE temp_table (count int); 
INSERT INTO temp_table VALUES((1),(2),(3)); 
SELECT * FROM temp_table; 

Das gibt:

11 errors were found during analysis. 

A comma or a closing bracket was expected (near "1" at position 31) 
Unexpected token. (near ")" at position 32) 
Unexpected token. (near "," at position 33) 
Unexpected token. (near "(" at position 34) 
Unexpected token. (near "2" at position 35) 
Unexpected token. (near ")" at position 36) 
Unexpected token. (near "," at position 37) 
Unexpected token. (near "(" at position 38) 
Unexpected token. (near "3" at position 39) 
Unexpected token. (near ")" at position 40) 
Unexpected token. (near ")" at position 41) 

Es funktioniert gut, wenn ich nur INSERT INTO temp_table VALUES(1); tue Aber es scheint, mit mir zu nehmen Ausgabe Klammern verwenden, so kann ich‘ t scheint mehrere Werte einzufügen.

Wenn ich INSERT INTO temp_table VALUES(1,2,3); tun Es gibt #1136 - Column count doesn't match value count at row 1

Und ich laufe in Fragen wie diese immer wieder mit verschiedenen MySQL Code-Beispiele, die ich in verschiedenen Quellen zu finden bin, einschließlich Stackoverflow. Also ich bin mir nicht sicher, was ich vermisse.

In meiner Host-Systemsteuerung kann ich sehen, dass ich MariaDB 5.3 und in phpMyAdmin (4.5.2) laufen lasse, kann ich sehen, dass ich MySQL 5.7.9 laufen lasse.

Und noch laufe ich auf Probleme, die Code laufen, der direkt von MariaDB's website kommt.

Würde es Ihnen etwas ausmachen, mich (vorsichtig) anzudeuten? Ich bin sicher, das muss einfach sein, und ich bin bereit zu lernen. Ich weiß einfach nicht, was das Problem ist, und bis ich diese Grundlagen lerne, werde ich einfach meine Räder drehen.

+0

Diese veraltete Version von phpMyAdmin hat einige Probleme mit der Linter und Parser, die hier einige falsche Warnungen/Fehler zeigt. Ihr Code muss weiterhin repariert werden, wie an anderer Stelle beschrieben, aber Sie sollten Ihr phpMyAdmin aktualisieren, um das Parser-Problem zu beheben. –

Antwort

4

Remove Verpackung()

CREATE TEMPORARY TABLE temp_table (count int); 
INSERT INTO temp_table VALUES(1),(2),(3); 
SELECT * FROM temp_table; 
+0

Vielen Dank, das ist hilfreich in diesem Beispiel. Ich glaube, ein Teil von dem, was mich wirft, ist, dass phpmyadmin Fehler im Editor anzeigt, aber wenn ich den Code ausführe, funktioniert es gut. Warum sollte es einen Fehler anzeigen, wenn es nicht wirklich ein Problem gibt? Scheint nicht sehr hilfreich. Ein anderes Beispiel ist 'CREATE TEMPORARY TABLE test2 SELECT * FROM test;' In phpmyadmin wird "select" in rot hervorgehoben und beklagt sich über "Eine öffnende Klammer wurde erwartet", aber wenn ich den Code ausführe, funktioniert es ganz gut. – Tim

+0

Der Code, den Sie zur Verfügung stellen, erzeugt Fehler in allen IDE .. Ich benutze Toad und (mit anderen Begriffen) error error) .. könnte die Ide Verarbeitung von myphpadmin eine falsche Analyse analisys tun .. – scaisEdge

+0

Ich habe gerade erst neulich Toad heruntergeladen , aber ich sah darin keinen großen Nutzen. Ich muss es neu installieren und es erneut versuchen, wenn es hilfreicher ist als der Editor in phpMyadmin. Danke für das Heads-up! – Tim

1

auf @scaisEdge Note Ausarbeiten, wenn Sie INSERT-Abfrage mit mehreren Werten zu schreiben, können Sie nicht Gruppe alle Werte zusammen.

//Wrong 
INSERT INTO temp_table values ((val1),(val2),(val3)); 

Folgendes sollten Sie stattdessen tun:

//Right 
INSERT INTO temp_table values (val1), (val2), (val3); 

Daher Ihre Abfrage sollte:

INSERT INTO temp_table VALUES(1),(2),(3); 

Hope this erklärt, viel Spaß!

+0

Danke für die Klarstellung. Ein Teil von dem, was mich wirft ist, warum einige MySQL-Code für einige Leute funktioniert (wie die Person, dass dieses Beispiel kam aus: http://www.databasejournal.com/features/mysql/article.php/3844811/Make-Your-MySQL-Abfragen-Effizienter-mit-Temporären-Tables.htm) und nicht für andere (mich). Ich gehe davon aus, dass es mit der von Ihnen verwendeten MySQL-Version zu tun hat, aber ich bin mir nicht sicher, wie ich mich mit den verschiedenen winzigen Unterschieden vertraut machen soll. Versuch und Irrtum? – Tim

+0

@Tim, der Link http://www.databasejournal.com/features/mysql/article.php/3844811/Make-Your-MySQL-Queries-More-Efficient-with-Temporary-Tables.htm, scheint eine zu haben falsche Syntax/Tippfehler. Sehen Sie sich die API-Dokumentation hier https://dev.mysql.com/doc/refman/5.5/en/insert.html an, die deutlich zeigt, dass Sie Werte nicht zusammen gruppieren können. – MSameer

Verwandte Themen