php复选框一项未选会报错,php-解决方案:此表不包含唯一列。 网格编辑,复选框,编辑,复制和删除功能不可用...

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

这不是问题,而是我发现可以解决的一个自我产生的问题/问题和解决方案。 我想分享一下会很有礼貌,因为我找不到完整的可行解决方案。

phpMyAdmin中生成的错误是:

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

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

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

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

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

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

希望这会有所帮助。

16个解决方案

36 votes

我已经遇到了这个问题。

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

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

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

2R2mt.png

Do Nhu Vy answered 2019-12-24T19:14:05Z

20 votes

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

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

dr fu manchu answered 2019-12-24T19:14:31Z

12 votes

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

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

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

Ravi answered 2019-12-24T19:15:01Z

12 votes

只需创建一个新列,将A_I设置为任意值,将AUTO_INCREMENT设置为INT并选中显示A_I的框即可。

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

column1 | column2 | id

-----------------------

value | value | 1

-----------------------

value | value | 2

-----------------------

value | value | 3

-----------------------

value | value | 4

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

Isaac Adni answered 2019-12-24T19:15:30Z

2 votes

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

ALTER TABLE `tablename`

ADD PRIMARY KEY (`id`);

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

Daniel Alsaker answered 2019-12-24T19:15:55Z

1 votes

在我的情况下,当我设置lower_case_table_names = 2并使用大写字符的表名时,该错误发生在phpmyadmin版本4.5.1中。该表的主键设置为自动递增,但仍显示该错误。 当我将表名更改为全部小写时,该问题停止了。

nonybrighto answered 2019-12-24T19:16:15Z

1 votes

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

1)点击“结构”

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

3)将自己垫在后面。

Average Joe answered 2019-12-24T19:16:48Z

1 votes

在phpMyAdmin文件中添加此文件对我有用(在最后的$ cfg行下):

phpMyAdmin

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

snubbus answered 2019-12-24T19:17:17Z

1 votes

我已经遇到了这个问题。

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

我有一个简单的解决方案:将一个字段设置为主键,以适合您的业务逻辑的特定文件。例如,我有数据库thesis_db和字段thesis_id,我将按按钮Primary(键图标)将thesis_id设置为主键字段

maral answered 2019-12-24T19:17:46Z

0 votes

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

Yuri answered 2019-12-24T19:18:06Z

0 votes

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

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

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

最简单的解决方法是在列的末尾添加一列   表作为唯一AI整数。 基本上所有MySQL都在说它需要一个   每个记录中的唯一值以区分行。

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

-在phpmyAdmin中打开,在“在[x]列上创建索引”中输入“ 2”,然后选择2列

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

fpierrat answered 2019-12-24T19:18:54Z

0 votes

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

Ray Foss answered 2019-12-24T19:19:14Z

0 votes

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

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

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

vinay samant answered 2019-12-24T19:19:43Z

0 votes

对我有用的代码

ALTER TABLE `table name`

ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT,

ADD PRIMARY KEY (`id`);

Oleg Abramov answered 2019-12-24T19:20:03Z

0 votes

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

Philip Drury answered 2019-12-24T19:20:23Z

0 votes

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

Jessa lauren answered 2019-12-24T19:20:43Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ag-grid-vue中,当在单击时不选中复选框,可以通过设置网格选项的一些属性来实现。 首先,我们可以使用`suppressRowClickSelection`属性来禁止单击行时选择行。该属性默认为false,即单击行时会同时选中复选框。将其设置为true,可以阻止行选中。 另外,还可以通过使用`onCellClicked`事件来处理单击时的逻辑。在该事件的处理程序中,我们可以检查点击的单元格是否是复选框单元格,如果是,则调用`event.stopPropagation()`方法阻止事件向上冒泡,从而使复选框不被选中。 例如: ``` <template> <div style="height: 500px;" class="ag-theme-alpine"> <ag-grid-vue :columnDefs="columnDefs" :rowData="rowData" :defaultColDef="defaultColDef" :rowSelection="rowSelection" :suppressRowClickSelection="true" @cellClicked="onCellClicked" ></ag-grid-vue> </div> </template> <script> export default { data() { return { columnDefs: [ { field: "name" }, { field: "age" }, { field: "country" }, { field: "checkbox", cellRenderer: "checkboxRenderer" }, ], rowData: [ { name: "John", age: 28, country: "USA" }, { name: "Jane", age: 32, country: "UK" }, { name: "Bob", age: 45, country: "Australia" }, ], defaultColDef: { sortable: true, filter: true }, rowSelection: "multiple", }; }, methods: { onCellClicked(params) { const colId = params.column.getId(); if (colId === "checkbox") { params.event.stopPropagation(); } }, }, }; </script> ``` 在上述代码中,我们设置了一个名为`checkboxRenderer`的自定义单元格渲染器,用于渲染复选框。在`onCellClicked`方法中,我们检查了点击的单元格ID是否为`checkbox`,如果是,则调用了`event.stopPropagation()`方法。这样,在点击复选框时,复选框将不会被选中。 通过上述设置,我们可以实现在ag-grid-vue中点击时不选中复选框的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值