【问题标题】:MySQL: Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not availableMySQL:当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用
【发布时间】:2023-03-18 19:08:01
【问题描述】:

我已阅读有关我在 SO 中的问题的所有帖子。但没有什么能解决这个问题。

问题: 运行上述查询时,会出现以下警告。

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

以下是我的查询。

SELECT ST.stock_code, S.supplier_name, I.item_name, P.avail_qty, SL.unit_price, P.expire_date 
FROM purchase_items P 
INNER JOIN stock ST ON P.stock_id = ST.stock_id 
INNER JOIN suppliers S ON ST.sup_id = S.sup_id 
INNER JOIN items I ON P.item_id = I.item_id 
INNER JOIN sales SL ON P.item_id = SL.item_id 
WHERE (P.expire_date > (NOW() + INTERVAL 1 MONTH))

purchase_items 表

【问题讨论】:

  • 这是一个警告而不是错误。它的意思正是它所说的,您的查询是一个多表连接。尽管每个表都可能有一个主键或唯一索引,但 phpmyadmin 在这里显示的复杂查询无法区分一行与另一行。那里不能让你删除或编辑一行。
  • 谢谢你。但是我该如何克服这个问题,因为我需要 stock_id 和 item_id 组合来唯一,以及 purchase_id。添加更多,我不需要将相同的项目添加到相同的库存中。这就是为什么我保持这个组合独一无二的原因。
  • 使用不同的数据库客户端。
  • 这是 phpmyadmin 中的问题,这与您的系统有什么关系?

标签: mysql phpmyadmin unique-key


【解决方案1】:

我在使用 VIEW 时遇到了同样的问题,看起来它是 phpmyadmin 只是无法证明结果查询中存在表设计唯一的列。在您的情况下,它是 stock_id,但由于存在多个表连接并且 stock_id 不存在于其他行中,因此无法确定在编辑或删除时应该影响哪些行。 可以通过配置禁用此警告

$cfg['RowActionLinksWithoutUnique'] = true

https://docs.phpmyadmin.net/en/latest/config.html#cfg_RowActionLinksWithoutUnique

Resolution: This table does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available

【讨论】:

    【解决方案2】:

    警告末尾的信息按钮将带您进入 phpMyAdmin 配置设置页面,您将在其中找到:

    $cfg['RowActionLinksWithoutUnique'] Type: boolean Default value: false Defines whether to show row links (Edit, Copy, Delete) and checkboxes for multiple row operations even when the selection does not have a unique key. Using row actions in the absence of a unique key may result in different/more rows being affected since there is no guaranteed way to select the exact row(s).

    这解释了配置设置。 我在尝试使用多个表连接时遇到了这个问题,其中每个表都没有共享一个唯一列,尽管我使用的每个连接我都使用唯一主键来建立连接,但无论我写了多少不同的查询完成批量编辑的唯一方法是在小型连接查询中或向表中添加字段以使其与另一个表的唯一主键连接。 希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 2021-03-16
      • 2016-07-21
      • 2013-09-15
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多