【问题标题】:Add auto_increment feature to a primary key向主键添加 auto_increment 功能
【发布时间】:2020-02-06 16:58:41
【问题描述】:

我有一个与 sql 语言有关的问题。 我正在尝试将 auto_increment 功能添加到具有主键属性的预先存在的行中。我得到的是:

错误代码:1833。无法更改列“ODB_ID”:用于表“test3.target”的外键约束 target_ibfk。

用于表的语句是

CREATE TABLE `Receptor` (
  `ODB_ID` int(11) NOT NULL,
  `Name` varchar(10) NOT NULL,
  `Older Name` varchar(10) NOT NULL,
  `Uniprot_ID` varchar(10) NOT NULL,
  `Organism` enum('H','M','R') NOT NULL,
  `Sequence` varchar(1000) NOT NULL,
  PRIMARY KEY (`ODB_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

这个表是指这个:

CREATE TABLE `Target` (
  `Pubchem_ID` int(11) NOT NULL,
  `ODB_ID` int(11) NOT NULL,
  `Receptor` varchar(10) NOT NULL,
  `EC50` decimal(6,3) DEFAULT NULL,
  `Reference_ID` int(11) NOT NULL,
  KEY `Pubchem_ID` (`Pubchem_ID`),
  KEY `ODB_ID` (`ODB_ID`),
  KEY `Reference_ID` (`Reference_ID`),
  CONSTRAINT `target_ibfk_1` FOREIGN KEY (`Pubchem_ID`) REFERENCES `general` (`Pubchem_ID`),
  CONSTRAINT `target_ibfk_2` FOREIGN KEY (`ODB_ID`) REFERENCES `receptor` (`ODB_ID`),
  CONSTRAINT `target_ibfk_3` FOREIGN KEY (`Reference_ID`) REFERENCES `publication` (`Reference_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

我已尝试使用 MySQL gui 中的以下命令:

alter table `Receptor` MODIFY `ODB_ID` int not null auto_increment PRIMARY KEY;
alter table `Receptor` CHANGE `ODB_ID` `ODB_ID` int not null auto_increment PRIMARY KEY;

我在网站上查看了另一个建议,但它对我不起作用。

提前谢谢你。

【问题讨论】:

标签: mysql sql


【解决方案1】:

您需要禁用FOREIGN_KEY_CHECKS。然后在操作后再次启用它。以下对我有用:

set session foreign_key_checks = 0;

alter table `Receptor` MODIFY `ODB_ID` int not null auto_increment;

set session foreign_key_checks = 1;

见demo

请注意,我还在auto_increment 之后删除了PRIMARY KEY,因为ODB_ID 已经是PRIMARY KEY。

【讨论】:

    【解决方案2】:
    ALTER TABLE Receptor MODIFY COLUMN ODB_ID INT AUTO_INCREMENT;
    

    我认为 auto_increment 列必须是 PRIMARY KEY 或 UNIQUE KEY 的一部分,所以如果这不起作用,请尝试:

    ALTER TABLE Receptor MODIFY COLUMN ODB_ID INT AUTO_INCREMENT PRIMARY KEY;
    

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2021-10-25
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2015-03-08
      • 1970-01-01
      相关资源
      最近更新 更多