1025-Error on rename of ‘.\xxx\#sql-xxxx‘ to ‘.\xxx\product‘ (errno:150)
作者:互联网
当需要修改表中某些字段的类型时,比如将id类型由int改为bigint,报如下错误:
主要原因是:该表引用了外键(FOREIGN KEY)约束
可以通过命令行界面,查看
SHOW CREATE TABLE product;
结果如下:其中`CONSTRAINT `product_ibfk_1` FOREIGN KEY (`dir_id`) REFERENCES `productdir` (`id`)`表示product表中引入了外键约束,即product表中的dir_id等于productdir表中的id
| product | CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`productName` varchar(50) DEFAULT NULL,
`dir_id` int(11) DEFAULT NULL,
`salePrice` double(10,2) DEFAULT NULL,
`supplier` varchar(50) DEFAULT NULL,
`brand` varchar(50) DEFAULT NULL,
`cutoff` double(2,2) DEFAULT NULL,
`costPrice` double(10,2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `dir_id` (`dir_id`),
CONSTRAINT `product_ibfk_1` FOREIGN KEY (`dir_id`) REFERENCES `productdir` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 |
解决办法:
通过命令行取消外键约束(其中product_ibfk_1指的是外键约束名,在创建外键约束时会自动生成,无需定义)
ALTER TABLE product DROP FOREIGN KEY product_ibfk_1;
出现Query OK表示操作成功
然后就可以返回设计表中,修改相应的属性值了
如果修改完属性之后,还想要恢复之前的外键约束,那么可以通过命令行或者设计表模式下通过软件手动添加
方式一:命令行
ALTER TABLE product ADD CONSTRAINT product_ibfk_1 FOREIGN KEY (dir_id) REFERENCES productdir (id);
格式:
格式:(大小写无所谓)
alter table 表名
add constraint 外键约束名
foreign key (字段名)
references 关联的表名 (关联的字段名)
方式二:手动添加
标签:1025,rename,product,DEFAULT,xxx,外键,NULL,id,dir 来源: https://blog.csdn.net/sgr0216/article/details/114575318