Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建表时出现MySql错误_Mysql - Fatal编程技术网

创建表时出现MySql错误

创建表时出现MySql错误,mysql,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` INT(10) NULL , PRIMARY K

我想创建一个主键引用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,
PRIMARY KEY (`departamento`,`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',
`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;

数据库
tarina
已创建?是的,我已使用相同的用户创建了许多表表表
Geo_Provincia
是否存在?有没有专栏?此表未损坏?Geo_Provincia存在,它有两列作为PK,这可能是一个问题?能否向我们展示此表的create语句?