首页 > 其他 > 详细

解决报错:ERROR 1005 (HY000): Can't create table 'market.orders' (errno: 150)

时间:2019-09-18 22:33:16      阅读:114      评论:0      收藏:0      [点我收藏+]

1.描述问题:

在这里我新建了两张表(customers_info和orders)

表一:customers_info

CREATE TABLE customers_info
(
c_num INT(11) PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
c_name VARCHAR(50),
c_contact VARCHAR(50),
c_city VARCHAR(50),
c_birth DATETIME NOT NULL
);

  技术分享图片

 

 

此时我们在新建表二orders时候,题目要求c_id的数据类型为VARCHAR(50),却要求我给他设置一个外键约束,关联到customers_info表中的c_num。

CREATE TABLE orders 
(
o_num INT(11) PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
o_date DATE,
c_id VARCHAR(50),
CONSTRAINT fk_c_num FOREIGN KEY(c_id) REFERENCES customers_info(c_num) 
);

  执行这个时候,会出现报错:ERROR 1005 (HY000): Can‘t create table ‘market.orders‘ (errno: 150)

 

出现问题的大致情况:

1、外键的引用类型不一样,如主键是int外键是char

2、找不到主表中引用的列

3、主键和外键的字符编码不一致,也可能存储引擎不一样

这里我遇到的是第一种和第三种情况,如图所示:

技术分享图片

 

 

解决方式:

1.修改两张表的存储引擎相同

2.修改两者的数据类型一致

技术分享图片

 

 

技术分享图片

 

 

MariaDB [market]> show create table customers_info\G
*************************** 1. row ***************************
       Table: customers_info
Create Table: CREATE TABLE `customers_info` (
  `c_num` int(11) NOT NULL AUTO_INCREMENT,
  `c_name` varchar(70) DEFAULT NULL,
  `c_birth` datetime NOT NULL,
  `c_phone` varchar(50) DEFAULT NULL,
  `c_gender` char(1) DEFAULT NULL,
  PRIMARY KEY (`c_num`),
  UNIQUE KEY `c_num` (`c_num`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

MariaDB [market]> show create table orders\G
*************************** 1. row ***************************
       Table: orders
Create Table: CREATE TABLE `orders` (
  `o_num` int(11) NOT NULL AUTO_INCREMENT,
  `o_date` date DEFAULT NULL,
  `c_id` int(50) DEFAULT NULL,
  PRIMARY KEY (`o_num`),
  UNIQUE KEY `o_num` (`o_num`),
  KEY `fk_c_num` (`c_id`),
  CONSTRAINT `fk_c_num` FOREIGN KEY (`c_id`) REFERENCES `customers_info` (`c_num`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

  

 

解决报错:ERROR 1005 (HY000): Can't create table 'market.orders' (errno: 150)

原文:https://www.cnblogs.com/python-wen/p/11545515.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!