2011-08-25 170 views
1

我在Idaq托管软件包上使用Webmin来管理我的MySQL数据库。我从前一个主机导入了数据库,现在发现我无法更改任何特定表中的数据,因为出现错误“此表中的数据由于没有主键而无法编辑”。在没有主键的MySQL数据库中编辑数据

在一个PHP脚本中,我可以改变数据,但真的需要从控制面板中改变它。

当我尝试创建一个主键字段我得到以下错误“无法保存现场:SQL改变表userbase添加referenceNumber SMALLINT NOT NULL AUTO_INCREMENT失败:不正确的表定义;只能有一个自动柱,它必须被定义为一个键“

我很清楚,任何表都应该包含一个主键,这是我的错误,但任何人都可以提供一些帮助吗?

+0

你能告诉我们表的定义(CREATE TABLE ...)吗? – Devart

+0

我的答案解决了您的问题吗? –

+0

对不起,对于迟到的响应,但它工作了一个治疗Pez,谢谢 – Mick

回答

2

这是因为您没有在同一时间将它设置为密钥,所以它不能通过and it must be defined as a key部件,因此将密钥放在最后。

使用

ALTER TABLE tableName ADD autoIncrementColumn MEDIUMINT NOT NULL AUTO_INCREMENT KEY 

额外的资讯从约翰在评论

@Mick,为了增加PEZ的答案,如果你不提供一个主键, 的MySQL增加了一个隐藏主整数自动增量键。为了 覆盖隐藏键,alter table语句必须指定 增加一个新字段并在同一行 中分配新PK,否则隐藏PK将阻止更改。

+0

@Mick,要添加到PEZ的答案,如果你不提供主键,MySQL会添加一个隐藏的主整数自动增量键。为了覆盖隐藏键,“alter table”语句必须指定添加一个新字段并在同一行中分配新PK,否则隐藏PK将阻止更改。 – Johan

+0

感谢Johan的额外细节,我没有意识到这一点! –