2013-04-13 22 views
10
DROP TABLE IF EXISTS `transactions`; 
CREATE TABLE `transactions` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `purchase_date` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
INSERT INTO `transactions` (`purchase_date`) VALUES (NULL) 

Ich habe mein Problem in diesem Code isoliert. Wenn ich es ausführe, erhalte ich den Fehler:"Unbekannte Spalte in 'Feldliste'", aber Spalte existiert

[ERROR in query 3] Unknown column 'purchase_date' in 'field list'

Wer eine Idee?

Antwort

15

Es gibt ein nicht druckbares Zeichen 30 (RecordSeparator) zwischen purchase_date und ' in der INSERT-Anweisung. Entfernen Sie einfach den Text ('purchase_date') und schreiben Sie es von Hand um, es sollte in Ordnung sein.

+0

Das ist hinterhältig. Vielen Dank. – Rits

+2

Woher hast du, dass es einen nicht druckbaren Charakter gibt? –

+2

Nur dummes Glück. Klicken Sie auf Bearbeiten, kopieren Sie das SQL und fügen Sie es in einen Editor ein, der nicht druckbare Dateien anzeigt. – whetstone

3

Ich verbrachte gerade den besseren Teil eines Tages damit, dies herauszufinden. Mein Problem war das gleiche: unsichtbare Zeichen, die die Abfrage kiboshing und den Fehler "unbekannte Spalte" zurückgaben.

Ich löste es durch waten zurück in Windows und Entfernen der Müll mit NotePad ++.

Wie kam der Müll überhaupt dorthin? Ich denke, das lag daran, dass ich den Fehler gemacht habe, einige lange komplexe Abfragen in LibreOffice Writer (mein Dokument mit funktionalen Spezifikationen) zu kopieren, statt sie nur in phpMyAdmin zu bookmarken oder sie in einem Texteditor zu speichern. Einfügen von LibreOffice in das Abfragefenster ist, wo (denke ich) der Müll entstanden ist.

Einmal dort, beharrte es wie Malaria. Ich konnte es nicht einmal loswerden, indem ich die gesamte Abfrage von Hand abtippte - ich musste es in NotePad ++ (Encoding-Menü) einfügen und ANSI und die UTF8-Combos anzeigen und dann den Müll von Hand entfernen.

Sobald das getan wurde, funktionierte die Abfrage.

2

Dies kann auch passieren, wenn Sie beim Erstellen der Tabellenstruktur einen Spaltennamen einfügen. Derselbe Fehler - aber die nicht druckbaren/unsichtbaren Zeichen befinden sich in der Tabellenstruktur, nicht in der Abfrage.

0

Nery Nische Lösung, als ich diesen Fehler bekam.

Ich hatte einen BEFORE INSERT Trigger auf meinem Tisch, der etwas mit NEW.`field_mysql_doesnt_think_exists` tat und wenn ich nicht das Feld zu einer Insert-Anweisung, dann würde ich sonst Dieser

[ERROR in query 3] Unknown column 'field_mysql_doesnt_think_exists' in 'field list'

0

vielleicht nicht helfen niemandem bestanden hat bekommen, aber das Hinzufügen "nur für den Fall" hilft es jemandem.

In meiner Situation war es eine andere Lösung.

Ich erhalte umfangreiche Datensätze als Excel-CSV-Dateien und verwende ein (WIL-) Skript, um die .csv-Datei in eine importierbare .sql-Datei zu konvertieren. Ich hatte einen Fehler in meinem Skript wobei diese beiden Linien nicht den gleichen Tabellennamen verweisen hatte (ich hatte die erste Lage hartcodiert und vergessen, es zu aktualisieren):

* "INSERT INTO `old_table_name` (`cid`, `date`, etc etc" 
* "CREATE TABLE IF NOT EXISTS `":_dbName:"` (etc etc " 

ich nur die erste Zeile geändert auch zu bekommen der Tabellenname aus der Variablen und voila!

* "INSERT INTO `":_dbName:"` (`cid`, `date`, etc etc" 

Überprüfen Sie also diese beiden Zeilen in Ihrer Import-SQL-Datei.

Verwandte Themen