我刚开始使用SQL语法,我正在尝试创建一个表。
这是我的错误:
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在#CONS; CONSTRAINT附近使用正确的语法uc_people_2nd UNIQUE(lastName,firstName),)ENGINE = INNODB'在第7行
这是我的SQL:
CREATE TABLE `people` (
`_id` INT NOT NULL AUTO_INCREMENT,
`lastName` TEXT NOT NULL,
`firstName` TEXT NOT NULL,
`JSON` TEXT NOT NULL,
PRIMARY KEY(_id)
CONSTRAINT uc_people_2nd UNIQUE (lastName,firstName),
) ENGINE = INNODB;
我在NodeDB(我正在开发)中尝试了这个,然后是PHPMyAdmin。
答案 0 :(得分:9)
修复逗号并输入名称varchar()
:
CREATE TABLE `people` (
`_id` INT NOT NULL AUTO_INCREMENT,
`lastName` varchar(255) NOT NULL,
`firstName` varchar(255) NOT NULL,
`JSON` TEXT NOT NULL,
PRIMARY KEY(_id),
CONSTRAINT uc_people_2nd UNIQUE (lastName, firstName)
) ENGINE = INNODB;
这适用于SQL Fiddle。
请注意,您不必为名称指定唯一约束。您也可以删除constraint
关键字,以便以下工作正常:
UNIQUE (lastName, firstName)
编辑:
text
数据类型在页面上用其他“大对象”描述here。这些是任意长的特殊类型(想想兆字节)。它们在索引中使用时有限制。特别是,它们需要长度前缀。因此,您无法声明text
列是唯一的。只有它们在前N个字符(最多约1000个)中是唯一的。
对于名字来说,这太过分了。 MySQL支持各种类型的字符串类型。最有用的是varchar()
。这些适用于名称字段。它们可以轻松地与索引一起使用。 MySQL支持丰富的功能。
换句话说,如果您不知道text
是什么,则不需要它。如果您需要国家字符集支持,请了解并使用varchar()
和char()
(或nvarchar()
和nchar()
。忘掉text
。有一天,如果你需要它,你会重新发现它。