mysql无法为表创建外键的解决方法
程序员文章站
2022-05-09 11:22:01
...
要创建外键的表:
目的为表`orderitem`创建两个外键`pid`和`oid`关联到表`product`和`orders`
CREATE TABLE `orderitem` (
`itemid` varchar(32) NOT NULL,
`quantity` int(11) DEFAULT NULL, #购买数量
`total` double DEFAULT NULL, #小计
`pid` varchar(32) DEFAULT NULL, #购买商品的id
`oid` varchar(32) DEFAULT NULL, #订单项所在订单id
PRIMARY KEY (`itemid`),
KEY `order_item_fk_0001` (`pid`),
KEY `order_item_fk_0002` (`oid`),
CONSTRAINT `order_item_fk_0001` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`),
CONSTRAINT `order_item_fk_0002` FOREIGN KEY (`oid`) REFERENCES `orders` (`oid`)
) ;
关联的数据表:
表`product`
CREATE TABLE `product` (
`pid` varchar(32) NOT NULL,
`pname` varchar(50) DEFAULT NULL, #商品名称
`market_price` double DEFAULT NULL, #市场价
`shop_price` double DEFAULT NULL, #商城价
`pimage` varchar(200) DEFAULT NULL, #商品图片路径
`pdate` date DEFAULT NULL, #上架时间
`is_hot` int(11) DEFAULT NULL, #是否热门:0=不热门,1=热门
`pdesc` varchar(255) DEFAULT NULL, #商品描述
`pflag` int(11) DEFAULT 0, #商品标记:0=未下架(默认值),1=已经下架
`cid` varchar(32) DEFAULT NULL, #分类id
PRIMARY KEY (`pid`),
KEY `product_fk_0001` (`cid`),
CONSTRAINT `product_fk_0001` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表`orders`
CREATE TABLE `orders` (
`oid` varchar(32) NOT NULL,
`ordertime` datetime DEFAULT NULL, #下单时间
`total` double DEFAULT NULL, #总价
`state` int(11) DEFAULT NULL, #订单状态:1=未付款;2=已付款,未发货;3=已发货,没收货;4=收货,订单结束
`address` varchar(30) DEFAULT NULL, #收获地址
`name` varchar(20) DEFAULT NULL, #收获人
`telephone` varchar(20) DEFAULT NULL, #收货人电话
`uid` varchar(32) DEFAULT NULL,
PRIMARY KEY (`oid`),
KEY `order_fk_0001` (`uid`),
CONSTRAINT `order_fk_0001` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`)
) ;
不能为表`ordersitem`创建连个外键的原因:关联两张表`pid`字段的字符集和排序规则不一致(比如一个是GBK,一个是UTF-8),把两张表的`pid`字段改为一致,则可以为表`ordersitem`创建外键啦.......
上一篇: ASP.NET向Web服务器上传文件
下一篇: vue如何解析userAgent
推荐阅读
-
MySQL删除表的时候忽略外键约束的简单实现
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
-
MySQL删除表的时候忽略外键约束的简单实现
-
Win7系统在安装软件的时候弹出无法创建值:写入注册表时出错的解决方法
-
MySQL删除有外键约束的表数据方法介绍
-
Django使用migrate数据库表无法创建的解决方法
-
MySQL无法创建外键的原因及解决方法
-
牛客SQL练习-46-在audit表上创建外键约束,其emp_no对应employees_test表的主键id
-
SQL实战46.在audit表上创建外键约束,其emp_no对应employees_test表的主键id
-
ora-01658 无法为表空间USERS 中的段创建INITIAL区