我正在尝试创建表,但出现此错误:
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
)
);
有人知道我该如何解决吗?谢谢。
答案 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
答案 1 :(得分:0)
BLOB / TEXT的长度为65535。Indexes in MySQL are considerably less。
建议使用长度适合URL的VARCHAR(length)
(拉丁字符集)。