【问题标题】:Edit data in MySQL Database with no Primary Key在没有主键的情况下编辑 MySQL 数据库中的数据
【发布时间】:2011-11-03 17:22:36
【问题描述】:

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

在 php 脚本中,我可以更改数据,但确实需要从控制面板进行更改。

当我尝试创建主键字段时,我收到以下错误“无法保存字段:SQL alter table userbase add referenceNumber smallint not null auto_increment 失败:表定义不正确;只能有一个自动列并且它必须被定义为一个键”

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

【问题讨论】:

  • 你能告诉我们表的定义(CREATE TABLE...)吗?
  • 我的回答解决了你的问题吗?
  • 很抱歉回复晚了,但它对 Pez 很有帮助,谢谢

标签: mysql webmin


【解决方案1】:

这是因为您没有同时将其设置为密钥,因此它无法通过and it must be defined as a key 部分,将密钥放在末尾。

使用

ALTER TABLE tableName ADD autoIncrementColumn MEDIUMINT NOT NULL AUTO_INCREMENT KEY

来自约翰在 cmets 的额外信息

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

【讨论】:

  • @Mick,添加到 PEZ 的答案中,如果您不提供主键,MySQL 会添加一个隐藏的主整数自动增量键。为了覆盖隐藏键,alter table 语句必须在同一行中指定添加新字段和分配新 PK,否则隐藏 PK 将阻止更改。
  • 感谢约翰提供的额外细节,我没有意识到这一点!
猜你喜欢
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多