2017-05-08 75 views
1

我有一個名爲'messages'的表。我不想添加一個名爲'key'的列。無法將列添加到表 - mysql

當我嘗試

ALTER TABLE messages ADD key BIGINT(20); 

我得到這個錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bigint(20)' at line 1

我在做什麼錯?

+0

在此處發佈添加列查詢 –

+1

@MayankPandeyz:它已發佈。它是第一個代碼片段。 –

回答

2

語法突出顯示已經顯示問題:key是關鍵字(是的,我知道這聽起來很有趣)。您可以使用反引號來指定列名:

ALTER TABLE messages ADD `key` BIGINT(20); 
--      ^^backquotes

介意,反引號是列名的部分:列的名稱將是key。通過使用反引號,您明確聲明您寫了一個列名稱,而不是關鍵字key

+0

它的工作。但有什麼方法可以在表格中顯示時從鍵中刪除反引號? – JonasSH

+2

@JonasSH:反引號是**不是列名的一部分。反引號僅用於表示您指定了名稱'key',而不是關鍵字鍵。 –

+2

@JonasSH,反引號不會存儲在數據庫中。此外,停止使用表格/列名稱的保留/關鍵字 – Rahul

3

因爲key是mysql中的關鍵字。 Reserved keywords

您可以逃脫你應該罰款與此查詢的字鍵使用

ALTER TABLE messages ADD `key` BIGINT(20); 

0

問題是key的MySQL一個保留字,因此需要使用雙引號""(ANSI92標準)等

使用backtique像

ALTER TABLE messages ADD `key` 

(OR)進行轉義

ALTER TABLE messages ADD "key" 

更好的是,停止使用reservewords /關鍵字f或表/列名稱(實際上用於任何DB對象名稱)