数据库
首页 > 数据库> > 1025-Error on rename of ‘.\xxx\#sql-xxxx‘ to ‘.\xxx\product‘ (errno:150)

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