2016-01-23 76 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保留关键字的完整列表。