我试图在mysql中运行以下代码,但出现以下错误:
Error Code: 1070. Too many key parts specified; max 1 parts allowed 0.0011 sec
原始sql代码:
CREATE TABLE IF NOT EXISTS RecordLocation3 (
id BINARY(16) NOT NULL,
typeId BINARY(16) NOT NULL,
symbolId INT NOT NULL,
value POINT NOT NULL,
PRIMARY KEY (symbolId, value, typeId, id),
KEY k_id (id),
SPATIAL KEY k_value (value)
) ENGINE= MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
有人知道如何增加关键部分的数量吗?
谢谢, 马克。
答案 0 :(得分:1)
我通过在Mac OSX上使用MySQL 5.7.24解决了这个问题。
使用8.0+版本无效。
我想我使用的框架不支持更高版本的mysql。
答案 1 :(得分:1)
这是因为value
与其他不同数据类型的列在主键中。
我只是通过反复试验弄清楚了这一点。在MYSQL 8中,如果一个或多个是空间类型,则不能具有混合组件的键。
从主键中取出价值,它应该起作用。
无论如何,自动递增列对于PK来说会更好。