2

如果我尝试执行以下操作:

ALTER TABLE myTable MODIFY id int unsigned;

andid是主键还是外键,会抛出如下错误:

ERROR 1025 (HY000): Error on rename of './mydb/#sql-146dd_c' to './mydb/myTable' (errno: 150)

如果我放下钥匙做这样的事情:

ALTER TABLE myTable DROP FOREIGN KEY id;

然后我可以正常运行MODIFY,但这似乎有点令人费解。

有什么方法可以让我只MODIFY删除我的列而不删除并重新添加我的主键/外键?

4

1 回答 1

2

您确实可以重命名主键,但是,您必须首先使用DROP PRIMARY KEY子句临时撤销它们的特殊状态到 ALTER TABLE:

ALTER TABLE tbl_name DROP PRIMARY KEY my_misnamed_primary_key;
ALTER TABLE tbl_name RENAME COLUMN my_misnamed_primary_key TO primary_key;
ALTER TABLE tbl_name ADD PRIMARY KEY primary_key;

抱歉,但出于诚信的目的,这是您应该这样做的唯一方法。

于 2013-05-01T22:46:53.557 回答