当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用

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 - 网格编辑,复选框,编辑,复制和删除功能不可用

PHPMyAdmin 4.0.5 - 网格编辑、复选框、编辑、复制和删除功能不可用

迁移数据库 phpmyadmin 的问题

作为网格编辑器的容器控件不会更新值