MySQL 错误 'Can't create table 'college.goods' (errno: 150)' 解决方法
MySQL 错误 'Can't create table 'college.goods' (errno: 150)' 解决方法
当您在 MySQL 中执行创建表的语句时,遇到错误 'Can't create table 'college.goods' (errno: 150)',这通常是因为外键约束的问题。
错误原因:
此错误通常表明您尝试在表 goods 中创建外键约束,但该外键引用了另一个表(student)中的 Sid 字段,而这两个字段的类型或长度不一致。
解决方法:
-
检查表字段类型和长度:
- 确保表
student中的Sid字段类型和长度与表goods中的Sid字段类型和长度一致。例如,如果student表中的Sid是INT(11)类型,那么goods表中的Sid也应该使用INT(11)类型。
- 确保表
-
修改表结构:
- 如果字段类型或长度不一致,您需要修改其中一个或两个表以确保一致性。例如,您可以将
goods表中的Sid字段类型修改为INT(11)。
- 如果字段类型或长度不一致,您需要修改其中一个或两个表以确保一致性。例如,您可以将
示例代码:
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
`Gid` int(0) NOT NULL AUTO_INCREMENT,
`Sid` int(0) NULL DEFAULT NULL,
`Gname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gbuyprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gsellprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gphoto` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gdescribe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gaudit` enum('0','1') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
`Gstatus` enum('0','1','2','3') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
`Gtime` datetime NULL DEFAULT NULL,
`Gupdate_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`SELLusername` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`Gid`) USING BTREE,
INDEX `Sid`(`Sid`) USING BTREE,
CONSTRAINT `Sid` FOREIGN KEY (`Sid`) REFERENCES `student` (`Sid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
注意:
- 确保您对数据库操作有足够的了解,避免意外数据丢失或损坏。
- 如果您不确定如何修改表结构,请咨询您的数据库管理员或参考 MySQL 官方文档。
总结:
MySQL 错误 'Can't create table 'college.goods' (errno: 150)' 通常由外键约束引发的类型或长度不一致问题导致。通过检查表结构并确保外键引用字段类型和长度一致,即可解决此错误。
原文地址: https://www.cveoy.top/t/topic/oWwA 著作权归作者所有。请勿转载和采集!