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

我在此代碼中隔離了我的問題。當我運行它時,出現錯誤:「字段列表中的未知列」「,但列確實存在

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

任何想法?

回答

15

有一個在purchase_dateINSERT語句中的'之間插入的不可打印字符30(RecordSeparator)。只要刪除文本('purchase_date')並重寫它手應該沒事。

+0

這是鬼鬼祟祟的。謝謝。 – Rits

+2

你是怎麼知道有一個不可打印的字符? –

+2

只是愚蠢的運氣。單擊編輯,複製SQL並將其粘貼到顯示不打印的編輯​​器中。 – whetstone

3

我剛剛花了一天的好時間搞清楚這一點。我的問題是相同的:不可見的字符kiboshing查詢和返回「未知的列」錯誤。

我通過回到Windows並使用NotePad ++刪除垃圾來解決它。

垃圾是如何進入那裏的?我認爲這是因爲我犯了一個錯誤,就是將一些複雜的查詢複製到LibreOffice Writer(我的功能規範文檔)中,而不是將它們加入phpMyAdmin或將它們保存在文本編輯器中。將它們從LibreOffice粘貼到查詢窗口中是垃圾發生的地方(我認爲)。

一旦出現,它就像瘧疾一樣持續存在。我甚至無法通過手工重新輸入整個查詢來擺脫它 - 我必須將它放入NotePad ++(Encoding菜單)並顯示ANSI和UTF8組合,然後手動刪除垃圾。

一旦完成,查詢工作。

2

如果在構建表結構時粘貼列名,也會發生這種情況。相同的錯誤 - 但不可打印/不可見字符位於表結構中,而不是查詢。

0

當我得到這個錯誤時,Nery niche的解決方案。

我對我的表做了一件與 NEW.`field_mysql_doesnt_think_exists` 一個BEFORE INSERT觸發,如果我沒有那場傳遞到一個INSERT語句,然後我會得到

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

0

這可能不是幫助別人,但增加這個「以防萬一」它有助於某人。

在我的情況下,這是一個不同的解決方案。

我接收到大型數據集作爲Excel CSV文件並使用(WIL)腳本將.csv文件轉換爲可導入的.sql文件。我曾在我的腳本發生錯誤,從而這兩條線沒有引用同一個表的名字(我已經硬編碼的第一位置,並且忘記更新):

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

我剛換了行頭也得變量的表名,瞧!

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

因此,檢查導入SQL文件中的這兩行。