繁体   English   中英

MYSQL#1005-无法创建表(错误号:150)

[英]MYSQL #1005 - Can't create table (errno: 150)

CREATE TABLE IF NOT EXISTS `userinit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usn` varchar(20) NOT NULL,
  `pwd` varchar(20) NOT NULL,
  `cmnd` int(9) NOT NULL,
  `dienthoai` varchar(11) NOT NULL,
  PRIMARY KEY (`id`,`usn`,`cmnd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

这是我在mysql中创建的第一张表,然后我进行查询以创建第二张表userinfo,如下所示

create table userinfo(
    cmnd int(9) primary key not null,
        ngaycapcmnd date,
        noicap varchar(50) character set utf8,
        hoten varchar(50) character set utf8 not null,
        ngaysinh date not null,
        quequan varchar(50) character set utf8,
        diachi varchar(100) character set utf8 not null,
        email varchar(100) unique not null,
        constraint fk_userinfo_userinit foreign key (cmnd) references userinit(cmnd)
)

然后它说,当我按OK时:#1005-无法创建表'xbook.userinfo'(errno:150)。 我使用最新的xampp。 你们能帮我解决这个问题吗

这是因为您要引用的列没有复合键尽管该列是复合键的一部分

尝试在其中添加KEY ,例如

CREATE TABLE IF NOT EXISTS `userinit` 
(
  ......
  KEY (cmnd),         -- <<=== HERE
  PRIMARY KEY (`id`,`usn`,`cmnd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM