2013-03-31 113 views
4

這是一些簡單的代碼,但我不知道爲什麼我不能用這個詞作爲表在列名稱中使用保留字

CREATE TABLE IF NOT EXISTS users(
key INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
username VARCHAR(50) NOT NULL, 
); 

我意識到我不能使用「的實體關鍵「,如果我使用密鑰mysql將要求我檢查語法,但如果我使用」id「或任何其他人將創建表。

任何人都知道我可以如何創建實體名稱到關鍵?不是重要的,因爲我可以使用id而不是key,但是因爲我發現這個錯誤,我想知道是否有辦法讓它工作。

+1

我強烈建議您查找比SQL保留字更有意義的名稱。也許'UserId'會是一個好名字 - 對於偶然的觀察者來說,它更具信息量。 –

+0

可能的重複[爲什麼我不能在MySQL中使用某些單詞作爲表/列名?](http://stackoverflow.com/questions/23446377/why-cant-i-use-certain-words-as-table -column-names-in-mysql) – Dukeling

回答

13

如果您願意,仍然可以使用key。只是反向包裝它,

CREATE TABLE IF NOT EXISTS users 
(
    `key` INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    username VARCHAR(50) NOT NULL, 
); 

但作爲勸告,不要使用任何保留的關鍵字,以避免將來的問題。 :)

+0

好的,謝謝讓我試試這個^ _^ – Tsuna

+0

好的工作......我試過\認爲這可能是如何做到這一點,因爲在PHP \轉義字符哈哈....非常感謝^ _ ^每天都會學到新東西 – Tsuna

+0

不客氣':D' –

2

結尾下劃線

簡單的解決方案:添加尾隨下劃線到每一個名字。

SQL規範SQL:2011明確承諾永遠不會在任何關鍵字上使用尾隨下劃線,無論是現在還是未來。

實施例:key_

參見my answer到一個類似的問題,H2數據庫列名被保留字