在phpMyAdmin中没有唯一列的表
在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有问题?
在phpMyAdmin中,如果你的表中没有唯一列,可能会出现无法进行更新的问题。解决方法是创建一个复合主键来保证唯一性。
首先,你需要确认你能够创建一个唯一的复合主键,比如(editor_id, vfile_id)。然后,使用以下代码来添加主键:
ALTER TABLE group_edits ADD PRIMARY KEY (editor_id, vfile_id)
在执行这个操作之前,建议你使用phpmyadmin导出表的副本,以防出错时能够恢复数据。
通过这样的操作,phpmyadmin就能够允许你更新表中的行了。
关于复合主键,我之前并不了解。我在stackoverflow上看到了一个很古老的问题:stackoverflow.com/questions/4737190/…