【发布时间】: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;
我在网站上查看了另一个建议,但它对我不起作用。
提前谢谢你。
【问题讨论】:
-
你的版本是什么?
-
OT 注意:在某些系统上,表名区分大小写,
receptor与Receptor不同。因此,当您决定将数据库迁移到另一个系统时,请保持一致以避免出现问题。