SQL错误-密钥规范中使用的BLOB / TEXT列'url'没有密钥长度

时间:2019-02-04 21:37:32

标签: mysql sql

我正在尝试创建表,但出现此错误:

SQL error - BLOB/TEXT column 'url' used in key specification without a key length

这是我正在使用的SQL

CREATE TABLE recipes (
url         TEXT  NOT NULL,
name        TEXT  NOT NULL,
pic_url     TEXT  NOT NULL,
vegetarian  INT   NOT NULL,
ingredients TEXT  NOT NULL,
time        INT   NOT NULL,
rating      FLOAT NOT NULL,
ratings_no  INT   NOT NULL,
keywords    TEXT  NOT NULL,
UNIQUE (
    url
)
);

有人知道我该如何解决吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您只能索引TEXT或BLOB列的第一列。

UNIQUE (url(512)) 

可以做到这一点,在该列的前512个字符上创建索引。

但是,除非绝对必要,否则应避免使用TEXT列,并且几乎绝不使用索引。它们进入DBMS中单独分配的对象,这会使插入,更新和查询变慢。 VARCHAR(2048) or a datatype like that will perform better。唯一索引之类的东西也可以正常工作。请阅读这个。 https://dev.mysql.com/doc/refman/8.0/en/blob.html

请注意,网址when limited to about 2000 characters in length效果最好。

答案 1 :(得分:0)

BLOB / TEXT的长度为65535。Indexes in MySQL are considerably less

建议使用长度适合URL的VARCHAR(length)(拉丁字符集)。