2012-02-14 49 views
0

這裏是我的問題的要點..MySQL查詢wierdness與鋰從開發到生產

CREATE TABLE `customers` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `first_name` varchar(50) DEFAULT NULL, 
    `last_name` varchar(50) DEFAULT NULL, 
    `website` varchar(255) DEFAULT NULL, 
    `chargify_customer_id` int(11) DEFAULT NULL, 
    `source_url` varchar(255) DEFAULT NULL, 
    `referer` varchar(255) DEFAULT NULL, 
    `updated` datetime DEFAULT NULL, 
    `created` datetime DEFAULT NULL, 
    `email` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 


## This causes an error. 
mysql> SELECT Customers.id FROM `customers` AS `Customers` WHERE `Customers.chargify_customer_id` = xxx; 
ERROR 1054 (42S22): Unknown column 'Customers.chargify_customer_id' in 'where clause' 


## But 
mysql> SELECT Customers.id FROM `customers` AS `Customers` WHERE `chargify_customer_id` = xxx ; 

#gives a result 

有什麼奇怪的是,我的Mac開發環境中,查詢的工作..也許,我只需要睡覺,我錯過了明顯的東西?請幫助:)

+0

可以嘗試刪除表別名? – 2012-02-14 10:55:08

+0

如果它證明是一個不相關的問題(你的數據庫),你應該刪除這個問題,因爲它不可能幫助任何未來的訪問者。 – benzado 2012-02-15 19:06:43

+0

我如何刪除一個問題? – 2012-02-16 03:09:15

回答

0

你的報價在此和平查詢

`Customers.chargify_customer_id` 

使得MySQL的思考引號之間的洞字符串是列名。試試這個:

Customers.`chargify_customer_id` 

你也可以這樣做:

`Customers`.`chargify_customer_id` 

,並因爲這些話是沒有保留的人,你可以簡單地離開報價和做到這一點:

Customers.chargify_customer_id 
+0

Juergen,技術上這個查詢是由鋰本身生成的,我應該向他們發送關於這個的錯誤報告嗎?任何想法爲什麼它會在我的Mac上工作,但在Linux中失敗? – 2012-02-14 13:53:27

+0

我會說這是一個錯誤。但我不知道爲什麼這是適用於您的Mac。它在Windows下的MySQL Workbench中不起作用。 – 2012-02-14 14:03:06

+1

我將從控制器中添加一些導致此查詢的PHP代碼,因此來自#li3的人可以驗證我沒有做什麼遲緩的事情。 :) – 2012-02-14 14:39:26