2013-04-13 13 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) 

Izolowałem mój problem w tym kodzie. Po uruchomieniu otrzymuję komunikat o błędzie:"Nieznana kolumna w" liście pól "", ale kolumna istnieje

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

Masz pomysł?

Odpowiedz

15

W tekście purchase_date i ' w dokumencie INSERT znajduje się niedrukowalny znak 30 (RecordSeparator). Wystarczy usunąć tekst ('purchase_date') i przepisać go ręcznie, powinno być dobrze.

+0

To jest podstępne. Dzięki. – Rits

+2

Skąd masz niezadrukowaną postać? –

+2

Po prostu głupie szczęście. Kliknij przycisk edytuj, skopiuj kod SQL i wklej go do edytora, który pokazuje nieprodukty. – whetstone

3

Po prostu spędziłem większą część dnia, zastanawiając się nad tym. Mój problem był taki sam: niewidoczne postacie kiboshing kwerendy i zwracanie błędu "nieznanej kolumny".

Rozwiązałem go, powracając do systemu Windows i usuwając śmieci za pomocą NotePad ++.

W jaki sposób trafiły tam śmieci? Myślę, że to dlatego, że popełniłem błąd polegający na kopiowaniu długich złożonych zapytań do LibreOffice Writer (mój dokument funkcjonalny specyfikacji), zamiast tylko dodawać do zakładek je w phpMyAdminie lub zapisywać w edytorze tekstowym. Wklejenie ich z LibreOffice do okna zapytania to miejsce (jak sądzę) śmieci.

Kiedyś tam pozostało jak malaria. Nie mogłem się nawet tego pozbyć ręcznie, przepisując całe zapytanie - musiałem umieścić to w NotePad ++ (menu kodowania) i pokazać kombinacje ANSI i UTF8, a następnie usunąć śmieci ręcznie.

Po wykonaniu tej czynności zapytanie zadziałało.

2

Może się to również zdarzyć po wklejeniu nazwy kolumny podczas budowania struktury tabeli. Ten sam błąd - ale niedrukowalne/niewidoczne znaki są w strukturze tabeli, a nie w zapytaniu.

0

Nery rozwiązanie niszowe, gdy mam ten błąd.

miałem BEFORE INSERT spust na moim stole, że zrobił coś z NEW.`field_mysql_doesnt_think_exists` i jeśli nie przejdzie to pole do INSERT to chciałbym dostać

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

0

To może nie pomóc nikogo innego, ale dodanie tego "na wszelki wypadek" pomaga komuś.

W mojej sytuacji było to inne rozwiązanie.

Otrzymuję duże zestawy danych jako pliki Excel CSV i używam skryptu (WIL) do konwersji pliku .csv do importowanego pliku .sql. Miałem błąd w moim skrypcie przy czym te dwie linie nie odwołać taką samą nazwę tabeli (miałem zakodowane pierwszą lokalizację i zapomniał go aktualizować):

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

Właśnie zmienił pierwszą linię również uzyskać nazwa tabeli ze zmiennej i voila!

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

Sprawdź więc te dwie linie w importowanym pliku SQL.