2011-07-11 84 views
1

我在運行MySQL語句時出現語法錯誤。MySQL創建臨時表語法錯誤

我知道反引號可以添加到表名,使其工作,但想知道爲什麼它首先發生。

Create temporary table 6514202534e1b20f0d6331 (user_id INT (10)) ENGINE=HEAP; 

如果我把這個MySQL查詢瀏覽器,它把表名作爲兩個單獨的詞 - 6514202534e1b20f0d6331

表名是動態生成的,我之前沒有遇到過這個問題,所以我想知道爲什麼它突然停止工作。

回答

2

我想這是因爲服務器(mysql)在這種情況下理解爲6514202534 * e^1 INT。

使用`字符:

CREATE TEMPORARY TABLE `6514202534e1b20f0d6331` (user_id INT (10)) ENGINE=HEAP; 

這樣,MySQL服務器理解(明確的),整個短語的數據庫,表或字段不是一個值或功能等

例如`訂單'是合法的,而訂單會導致無效訂單條款出錯。

+0

仔細閱讀他的問題:「我知道反引號可以添加到表名,使其工作,但想知道爲什麼它首先發生。」 – Dirk

+0

是的,我忘了它。 – Rolice

+1

感謝您的回答,'e1'的確是問題所在。錯誤可以通過使用反引號或用字母而不是數字開始表名來解決。 – ssin