Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 FK约束格式不正确错误_Mysql_Sql_Foreign Keys_Create Table - Fatal编程技术网

Mysql FK约束格式不正确错误

Mysql FK约束格式不正确错误,mysql,sql,foreign-keys,create-table,Mysql,Sql,Foreign Keys,Create Table,每当我尝试将此sql文件导入本地主机时,都会收到以下错误消息 (#1005-无法创建表旅舍管理系统旅舍管理器(错误号:150“外键约束格式不正确”)) 以下是sql: DROP TABLE IF EXISTS `Hostel_Manager`; CREATE TABLE `Hostel_Manager` ( `Hostel_man_id` int(10) NOT NULL AUTO_INCREMENT, `Username` varchar(255) NOT NULL, `Fnam

每当我尝试将此sql文件导入本地主机时,都会收到以下错误消息

(#1005-无法创建表
旅舍管理系统
旅舍管理器
(错误号:150“外键约束格式不正确”))

以下是sql:

DROP TABLE IF EXISTS `Hostel_Manager`;

CREATE TABLE `Hostel_Manager` (
  `Hostel_man_id` int(10) NOT NULL AUTO_INCREMENT,
  `Username` varchar(255) NOT NULL,
  `Fname` varchar(255) NOT NULL,
  `Lname` varchar(255) NOT NULL,
  `Mob_no` varchar(255) NOT NULL,
  `Hostel_id` int(10) NOT NULL,
  `Pwd` LONGTEXT NOT NULL,
  `Isadmin` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`Hostel_man_id`),
  UNIQUE (`Username`),
  KEY `Hostel_id` (`Hostel_id`),
  CONSTRAINT `Hostel_Manager_ibfk_1` FOREIGN KEY (`Hostel_id`) REFERENCES `Hostel` (`Hostel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


LOCK TABLES `Hostel_Manager` WRITE;

UNLOCK TABLES;
宿舍桌:

CREATE TABLE `Hostel` (
  `Hostel_id` int(10) NOT NULL AUTO_INCREMENT,
  `Hostel_name` varchar(255) NOT NULL,
  `current_no_of_rooms` varchar(255) DEFAULT NULL,
  `No_of_rooms` varchar(255) DEFAULT NULL,
  `No_of_students` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Hostel_id`)
)

为什么会出现此错误以及如何修复它?

父列和子列的数据类型和长度都相同,并且父列是主列,因此这不是问题所在

我怀疑问题在于
字符集
hotel\u Manager
指定默认的
charset
,而
hotel
不指定。如果数据库的默认字符集不是
latin1
,则外部字符集的格式不正确

我建议明确地对齐
字符集
,使两个表的字符集相同(或者删除这两个表,或者声明相同的值)


请注意,两个表还需要具有相同的存储引擎
InnoDB
是默认值,因此这不应该是一个问题,但您可能也希望明确地将其对齐(如果您的数据库的默认值是
MyISAM
)。

请向我们展示table
Hostel
创建表
语句。很抱歉,我忘了添加它……请,为你的问题选择正确的标签。SQL Server与此无关,因为代码不是t-SQL。选择正确的标签将产生快速准确的答案。