2016-01-23 95 views
2

我想從我的命令行(Debian)創建一個表,但它口口聲聲說我在我的語法有錯誤。對我來說,它看起來很好,我已經得到了由2個不同的人誰也找不到問題檢查。錯誤而創建MySQL表

CREATE TABLE users (
    id INT(6) UNSIGNED AUTO_INCREMENT, 
    uuid VARCHAR(32) NOT NULL, 
    key VARCHAR(50) NOT NULL 
); 

一個人說刪除NOT NULL,但我仍然有同樣的問題。

回答

3

KEY是一個保留字嘗試my_key

CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT, 
     uuid VARCHAR(32) NOT NULL, 
    my_key VARCHAR(50) NOT NULL, 
    PRIMARY KEY (`id`)); 
+0

啊,謝謝!問題解決了。 – bwfcwalshy

+0

@scaisEdge - 您可以使用back-ticks「key」來轉義每個保留字。所以它沒有必要。 –

+0

@BerndBuffen但最好的做法當然是不使用保留字。 – Niagaradad

0

列名「鍵」時使用的第三列是保留字改變,所有你需要做的是更改名稱。

嗯,大概一個不可能知道所有的編程語言中的現有關鍵字,但一個可以使用顏色代碼啓用文本編輯器或集成開發環境(IDE)時寫的代碼幫助他/她自己。它有很多幫助。

+0

你基本上是正確與不知道的所有關鍵字@BerndBuffen的建議,但在MySQL(和可能很多其他情況下)手冊中的所有保留字很容易被上市。 – Niagaradad

1

對不起,

一個AUTO_INCREMENT字段,您必須擁有此列的關鍵。

所以此工程:

CREATE TABLE `user` (
    `id` int(6) unsigned NOT NULL AUTO_INCREMENT, 
    `uuid` varchar(32) DEFAULT NULL, 
    `key` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
1

MySQL有很多,不能作爲列名的保留關鍵字。在這裏,您使用key作爲列名稱,並且由於它是MySQL中的保留關鍵字,因此您需要將列的名稱更改爲非保留關鍵字。

你可以找到,不能用作列名here保留關鍵字的完整列表。