在phpMyAdmin中没有唯一列的表

28 浏览
0 Comments

在phpMyAdmin中没有唯一列的表

这是我的表格:

CREATE TABLE group_edits (
  vfile_id bigint(20) unsigned NOT NULL,
  editor_id int(10) unsigned NOT NULL,
  edits text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

由于一个editor_id可以编辑多个vfile_id,一个vfile_id也可以被多个editor_id编辑,所以没有唯一索引。

phpMyAdmin 4.1.6不允许我编辑这个表,提示:

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

现在让我觉得这个表有什么问题吗?当你取editor_id和vfile_id的值时,行是唯一的,但是单独的列都不是唯一的。

我知道修复它可以添加

`ID` int(11) NOT NULL AUTO_INCREMENT,

但这不符合我的数据库模式设计,我想避免添加花招来使phpMyAdmin工作。

是我的数据库设计有问题还是phpMyAdmin有问题?

0
0 Comments

在phpMyAdmin中,如果你的表中没有唯一列,可能会出现无法进行更新的问题。解决方法是创建一个复合主键来保证唯一性。

首先,你需要确认你能够创建一个唯一的复合主键,比如(editor_id, vfile_id)。然后,使用以下代码来添加主键:

ALTER TABLE group_edits ADD PRIMARY KEY (editor_id, vfile_id)

在执行这个操作之前,建议你使用phpmyadmin导出表的副本,以防出错时能够恢复数据。

通过这样的操作,phpmyadmin就能够允许你更新表中的行了。

关于复合主键,我之前并不了解。我在stackoverflow上看到了一个很古老的问题:stackoverflow.com/questions/4737190/…

0