解决:此表不包含唯一列。网格编辑,复选框,编辑,复制和删除功能不可用

2020/11/09 08:42 · php ·  · 0评论

这不是问题,而是我发现行之有效的自我产生的问题/解决方案。我认为分享是不错的礼貌,因为我找不到完整的可行解决方案。

phpMyAdmin中生成的错误是:

“此表不包含唯一列。网格编辑,复选框,编辑,复制和删除功能不可用。”

根据您的实际情况,有几种可行的解决方案。

例如,只要您的所有AI或“唯一标识符”字段都是唯一的,那么您就可以简单地更改表并确保它是主键并设置为唯一值。

我在一张桌子上用此解决方案解决了这个问题。

另一个表具有多个AI int值,这些值是Primary字段,但是有多个相同类型的值。

解决此问题的简单方法是,只需在表末尾添加一列作为Unique AI Int。基本上,MySQL只是在说每条记录需要一个唯一值来区分行。

希望这会有所帮助。

我一直面临这个问题。


原因是您的表
没有主键字段


我有一个简单的解决方案:将一个字段设置为适合您业务逻辑的特定字段的主键。


例如,我有数据库
thesis_db和字段thesis_id,我将按按钮Primary(键图标)以设置thesis_id为主键字段:

在此处输入图片说明

这不是错误。PhpMyAdmin只是通知您,结果集中没有唯一的ID列。根据您发送的查询的类型,这是所需的行为。

不是MySQL在说它需要一个唯一的ID,如果结果集中各列的任何组合都是唯一的,则这些列的值可以在UPDATE或DELETE查询中使用。phpMyAdmin表示它没有足够的信息来提供您通常会在具有唯一ID的结果集中看到的复选框和按钮。

只需创建一个新列,将设置Name为所需的任意值,将设置TypeINT选中显示的框即可A_I

图
A_I复选框代表AUTO_INCREMENT,这实际上意味着在新列中自动分配了序列号(请参见下文)。

 column1 | column2 | id
-----------------------
 value   | value   | 1
-----------------------
 value   | value   | 2
-----------------------
 value   | value   | 3
-----------------------
 value   | value   | 4

此列实质上是phpMyAdmin删除行的参考。如有必要,请单击此新列的唯一按钮,尽管这对我而言是自动发生的。完成上述步骤后,您将不再显示错误消息,并且应显示用于在phpMyAdmin中编辑行的按钮!

我的情况不同。此问题仅特定于PHPMyAdmin。我下载了其他几个管理工具(Adminer,MySQLWorkbench,HeidiSQL等),并且相同的数据库在所有这些工具中均能正常工作。

我已经定义了所有索引,主键和唯一键,但仍然收到错误。在升级到MySQL 5.6后,我得到了这一点(与以前的版本不一样)。

事实证明,PMA的大写表格名称存在问题。PMA无法识别带有大写表格名称的密钥。一旦将它们更改为较小的大小(ALTER TABLE mytable ENGINE=INNODB-我使用INNODB-对每个表执行此操作,而不更改其他任何内容),便可以正常访问。我在带有UniformServer的Windows系统上。

这是您摆脱该通知并能够打开那些网格进行编辑的方式

1)点击“结构”

2)转到要用作主键的字段(通常是第一个),然后单击该字段的“ PRIMARY”和“ INDEX”字段,并接受PHPMyadmin的弹出问题“ OK”。

3)将自己垫在后面。

一个简单的解决方法是转到“ SQL”选项卡,只需将其放入代码中

ALTER TABLE `tablename`
ADD PRIMARY KEY (`id`);

假设您有一个名为id的行。

将其添加到config.inc.php文件中对我有用(在最后的$ cfg行下):

$cfg['RowActionLinksWithoutUnique'] = 'true';

该文件应位于phpMyAdmin本地计算机上文件夹中

In my case, the error occured in phpmyadmin version 4.5.1 when i set lower_case_table_names = 2 and had a table name with uppercase characters, The table had a primary key set to auto increment but still showed the error. The issue stopped when i changed the table name to all lowercase.

I have been faced this problem.

The cause is your table don't have a primary key field.

And I have a simple solution: Set a field to primary key to specific filed that suit with your business logic.
For example, I have database thesis_db and field thesis_id, I will press button Primary (key icon) to set thesis_id to become primary key field

我最近遇到了同样的问题,并且在查找重复项之后,仅通过在表上设置(丢失)主键就可以解决此问题。希望这会有所帮助

这个问题帮助我确定了为什么phpMyAdmin拒绝我​​grid-edit-etc的问题。在某些桌子上。我只是忘了声明我的主键,而在我的“为什么该表与其邻居不一样”解决方案搜索过程中对此进行了监督 ...

我只是想对OP自我解答中的以下内容做出反应:

另一个表具有多个AI int值,这些值是Primary字段,但是有多个相同类型的值。

解决此问题的简单方法是,只需在表末尾添加一列作为Unique AI Int。基本上,MySQL只是在说每条记录需要一个唯一值来区分行。

这实际上是我的情况,但是绝对不需要添加任何列:如果您的主键是2个字段的组合(例如,多对多关系的联结表),则只需这样声明:

-在phpyAdmin中,只需在“在[x]列上创建索引”中输入“ 2”,然后选择2列


-或
ALTER TABLE mytable ADD PRIMARY KEY(mycol1,mycol2)

在运行Query之后尝试直接修改时出现此错误。事实证明,从该完全相同的查询中查看后,我能够修改这些值。

每当我用特定列触发SELECT查询时,我都会遇到相同的问题,尽管该列之一是表中的主要列。我正在尝试使用标准wordpress“职位”表中的选择性列获取选择性记录。ID列已经是主要且唯一的。

仅指定主/唯一列名称将无法解决此问题。您必须指定完整的列名,例如“ posts.id”(tablename.columnname),它告诉PMA选择特定的列并显示编辑等。

我的PMA是4.3.8。让我知道这是否有帮助。

对我有用的代码

ALTER TABLE `table name`
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`);

对于我来说,这是通过从原始源DB重新导出数据,然后将其导入到镜像DB中来解决的。

确保所有表都有一个主键。我忘记为一个表添加主键,这为我解决了这个问题。:)

这肯定是一个古老的话题,但我想总结一下,以提出新的想法。要解决讨论中的警告问题,您需要做的就是将表列之一设置为PRIMARY KEY约束。

本文地址:http://php.askforanswer.com/jiejuecibiaobubaohanweiyiliewanggebianjifuxuankuangbianjifuzhiheshanchugongnengbukeai.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!