【发布时间】:2016-01-07 08:54:26
【问题描述】:
使用 MySQL 中的 MyISAM 存储引擎,我想强制表中 POLYGON 列的唯一性。基本上,如果我尝试插入重复项,我希望它会导致错误,或者只是被忽略。对于传统的列类型,这可以使用 UNIQUE 关键字来完成,但对于空间列,这会导致如下错误:
ERROR 1170 (42000): BLOB/TEXT column 'bounding_box' used in key specification without a key length
来自这个表定义:
CREATE TABLE IF NOT EXISTS quadrants (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
bounding_box POLYGON NOT NULL UNIQUE,
centroid POINT NOT NULL UNIQUE,
SPATIAL KEY bb_idx(bounding_box),
SPATIAL KEY centroid_idx(centroid)
) ENGINE=MyISAM;
是否可以在 MySQL 中强制空间数据类型的唯一性?
编辑: 有人建议这是 MySQL error: key specification without a key length 的副本,但我相信它是不同的。该问题及其答案未提及空间数据类型。我只能推断POLYGON 实际上存储为BLOB,因此受到类似的约束。但是我仍然不知道是否有任何其他方法可以强制POLYGON 的唯一性---或者如果不是这种情况是否有实际的解决方法。
另一个问题解决了相同的错误,但在足够不同的上下文中,我觉得单独的问题很有用。
【问题讨论】:
-
没有任何搜索工作
标签: mysql spatial spatial-index