我正在尝试创建一个表,但出现此错误:
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
)
);
有谁知道我该如何解决这个问题?谢谢。
您只能索引 TEXT 或 BLOB 列的第一列。
UNIQUE (url(512))
将完成这个技巧,在列的前 512 个字符上创建一个索引。
但是,除非绝对必要,否则应避免使用TEXT
列,并且几乎从不使用索引。它们进入 DBMS 中单独分配的对象,这使得插入、更新和查询速度变慢。 VARCHAR(2048)
或类似的数据类型会表现得更好。像唯一索引这样的东西可以正常工作。请阅读此内容。https://dev.mysql.com/doc/refman/8.0/en/blob.html
请注意,URL 在长度限制在 2000 个字符左右时效果最佳。
BLOB/TEXT 的长度为 65535。MySQL中的索引要少得多。
建议使用长度适合 URL 的VARCHAR(length)
(拉丁字符集(。