当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用
Posted
技术标签:
【中文标题】当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用【英文标题】:Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available 【发布时间】:2016-08-10 16:07:36 【问题描述】:我在 phpMyadmin 中收到以下通知
。
以下是我在 phpMyadmin 中运行的查询。我尝试过使用 on 而不是 Using,我也尝试过删除一些连接。我使用 INNER JOIN 的那一刻,我收到了通知。
我试图找到解决方案,但它们都涉及为列设置索引或 AI
SELECT mr.response_id, mr.user_id, mr.topic_id, mr.response,
mt.name AS topic_name, mt.category_id,
mu.username, mc.name AS category_name
FROM mismatch_response AS mr
INNER JOIN mismatch_topic AS mt USING(topic_id)
INNER JOIN mismatch_user AS mu USING(user_id)
INNER JOIN mismatch_category AS mc USING(category_id)
但在所有表中,我都有一列被设置为主键并自动递增。
不知道还能做什么
【问题讨论】:
【参考方案1】:您的所有表可能都有一个作为主键的列,具有自动增量。但是执行上述查询后得到的结果没有任何唯一索引。
所有操作,即编辑、复制和删除都需要唯一索引才能工作,显然您不希望仅删除单个数据行就删除所有数据。
【讨论】:
如何更正此问题或使用唯一索引创建一个? 从SELECT
语句中的任何一个表中添加唯一索引..记住只有一个表
简而言之..在结果集中..应该只有一个主键..如果使用 JOINS,让主键来自任何表
谢谢。我该怎么做,你能给我一个我使用的查询的例子吗?或者一旦你使用多个连接就会丢失它?
我将其更改为以下内容,以便只有一列是主键,并且我得到相同的 SELECT mr.response, mt.name AS topic_name, mu.username, mc.name AS category_name FROM mismatch_response AS mr INNER JOIN mismatch_topic AS mt USING(topic_id) INNER JOIN mismatch_user AS mu USING(user_id) INNER JOIN mismatch_category AS mc USING(category_id)【参考方案2】:
事实证明,如果你在查询中使用 JOIN,phpmyadmin 总是显示Current selection does not contain a unique column.
并禁用编辑行的能力。 :(
我试图创建 2 个简单的表 t1 和 t2。它们都有两个字段:“id”作为主要自动增量和“名称”。
我所有的查询都输出消息Current selection does not contain a unique column.
:
SELECT t1.*,t2.* FROM t1 JOIN t2 ON t1.name=t2.name;
SELECT t1.id,t1.name FROM t1 JOIN t2 ON t1.name=t2.name;
SELECT t1.id,t1.name FROM t1 JOIN t2 ON t1.id=t2.id;
但是,如果我为此查询创建一个view
,则这些行将在 phpmyadmin 中变得可编辑。
【讨论】:
以上是关于当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用的主要内容,如果未能解决你的问题,请参考以下文章
如何修复:此表不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用
phpmyadmin:从多个表创建的视图现在 id 字段不是唯一的,无法编辑,更新删除
PHPMyAdmin 4.0.5 - 网格编辑,复选框,编辑,复制和删除功能不可用