我试图在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;
有人知道如何增加关键部件的数量吗?
谢谢,马克。
2条答案
按热度按时间vmdwslir1#
是因为
value
与不同数据类型的其他列一起位于主键中。我只是通过反复试验才弄明白这一点。在mysql 8中,如果一个或多个组件是空间类型,则不能有混合组件的键。把主键的值去掉,它就可以工作了。不管怎样,对于pk来说,自动递增列会更好。o4tp2gmn2#
我通过在MacOSX上使用MySQL5.7.24解决了这个问题。
使用版本8.0+不起作用。
我猜我使用的框架不支持mysql的更高版本。