Mysql FK约束格式不正确错误
每当我尝试将此sql文件导入本地主机时,都会收到以下错误消息 (#1005-无法创建表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
旅舍管理系统旅舍管理器
(错误号: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
)。请向我们展示tableHostel
的创建表
语句。很抱歉,我忘了添加它……请,为你的问题选择正确的标签。SQL Server与此无关,因为代码不是t-SQL。选择正确的标签将产生快速准确的答案。