我想從我的命令行(Debian
)創建一個表,但它口口聲聲說我在我的語法有錯誤。對我來說,它看起來很好,我已經得到了由2個不同的人誰也找不到問題檢查。錯誤而創建MySQL表
CREATE TABLE users (
id INT(6) UNSIGNED AUTO_INCREMENT,
uuid VARCHAR(32) NOT NULL,
key VARCHAR(50) NOT NULL
);
一個人說刪除NOT NULL,但我仍然有同樣的問題。
我想從我的命令行(Debian
)創建一個表,但它口口聲聲說我在我的語法有錯誤。對我來說,它看起來很好,我已經得到了由2個不同的人誰也找不到問題檢查。錯誤而創建MySQL表
CREATE TABLE users (
id INT(6) UNSIGNED AUTO_INCREMENT,
uuid VARCHAR(32) NOT NULL,
key VARCHAR(50) NOT NULL
);
一個人說刪除NOT NULL,但我仍然有同樣的問題。
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`));
列名「鍵」時使用的第三列是保留字改變,所有你需要做的是更改名稱。
嗯,大概一個不可能知道所有的編程語言中的現有關鍵字,但一個可以使用顏色代碼啓用文本編輯器或集成開發環境(IDE)時寫的代碼幫助他/她自己。它有很多幫助。
你基本上是正確與不知道的所有關鍵字@BerndBuffen的建議,但在MySQL(和可能很多其他情況下)手冊中的所有保留字很容易被上市。 – Niagaradad
對不起,
一個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;
MySQL有很多,不能作爲列名的保留關鍵字。在這裏,您使用key
作爲列名稱,並且由於它是MySQL中的保留關鍵字,因此您需要將列的名稱更改爲非保留關鍵字。
你可以找到,不能用作列名here保留關鍵字的完整列表。
啊,謝謝!問題解決了。 – bwfcwalshy
@scaisEdge - 您可以使用back-ticks「key」來轉義每個保留字。所以它沒有必要。 –
@BerndBuffen但最好的做法當然是不使用保留字。 – Niagaradad