加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

创建表上的MySql错误

发布时间:2021-05-22 12:48:34 所属栏目:MySql教程 来源:网络整理
导读:我想创建一个表,其中主键引用MySql上其他表的两列 像这样的东西 CREATE TABLE IF NOT EXISTS `tarina`.`Geo_Distrito` ( `departamento` INT(10) NOT NULL,`provincia` INT(10) NOT NULL,`codigo` INT(10) NOT NULL,`nombre` VARCHAR(80) NULL,`estado` IN

我想创建一个表,其中主键引用MySql上其他表的两列
像这样的东西

CREATE  TABLE IF NOT EXISTS `tarina`.`Geo_Distrito` (
  `departamento` INT(10) NOT NULL,`provincia` INT(10) NOT NULL,`codigo` INT(10) NOT NULL,`nombre` VARCHAR(80) NULL,`estado` INT(10) NULL,PRIMARY KEY (`departamento`,`provincia`,`codigo`),CONSTRAINT `FK_ProvinciaDistrito`  FOREIGN KEY (`departamento`,`provincia` )  REFERENCES `Geo_Provincia` (`departamento`,`codigo` )
)ENGINE = InnoDB;

并得到这个错误:

Can't create table 'tarina.Geo_Distrito' (errno: 150)

谁能告诉我这是什么问题? 最佳答案 无法创建表.如果错误消息引用错误150,则表创建失败,因为未正确形成外键约束.如果错误消息引用错误-1,则表创建可能失败,因为该表包含与内部InnoDB表的名称匹配的列名.

这是因为您的列的定义必须相同.在你的情况下:

列不是同一类型,codigo int(10)unsigned NOT NULL和codigo INT(10)NOT NULL,

此外,您使用的FK provincia也与codigo不同.

这是脚本:

DROP TABLE IF EXISTS `Geo_Distrito`;
DROP TABLE IF EXISTS `Geo_Provincia`;
DROP TABLE IF EXISTS `Geo_Departamento`;

CREATE TABLE `Geo_Departamento` (
`codigo` int(10) unsigned NOT NULL COMMENT 'Codigo autogenerado',`nombre` varchar(80) NOT NULL COMMENT 'Nombre del departamento',`estado` int(10) unsigned NOT NULL COMMENT 'Estado de departamento',PRIMARY KEY (`codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Tabla de Departamentos';


CREATE TABLE `Geo_Provincia` (
`codigo` int(10) unsigned NOT NULL COMMENT 'Codigo autogenerado',`departamento` int(10) unsigned NOT NULL,`nombre` varchar(45) NOT NULL,`estado` int(10) unsigned NOT NULL,`codigo`) USING BTREE,CONSTRAINT `FK_ProvinciaDepartamento` FOREIGN KEY (`departamento`) REFERENCES `Geo_Departamento` (`codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Tabla de provincias del sistema.';

CREATE  TABLE IF NOT EXISTS `Geo_Distrito` (
`departamento` int(10) unsigned NOT NULL,`provincia` int(10) unsigned NOT NULL,`codigo` int(10) unsigned NOT NULL COMMENT 'Codigo autogenerado',`codigo` )
)ENGINE = InnoDB;

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读