MySQL:Can't create table 'tablename' (errno: 150)

原创 2012年03月23日 14:37:48

我创建的两个数据表:

CREATE TABLE IF NOT EXISTS `hospital` (
  `hospitalID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `hospitalname` varchar(80) COLLATE utf8_bin NOT NULL,
  `address` varchar(80) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`hospitalID`),
  UNIQUE KEY `hospital_name` (`hospitalname`),
  KEY `hospitalID` (`hospitalID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `patient` (
  `patientID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `patientname` varchar(40) COLLATE utf8_bin NOT NULL,
  `sex` varchar(6) COLLATE utf8_bin DEFAULT NULL,
  `age` int(5) NOT NULL,
  `DOB` date NOT NULL,
  `hospitalID` int(11) unsigned NOT NULL,
  PRIMARY KEY (`patientID`),
foreign key(hospitalID) references hospital on delete restrict
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;

提示以上错误。根据发生这种情况的原因主要有: 1、外键和被引用外键数据类型不一样 2、找不到要被引用的列 3、表的字符编码不一样 

查找错误,发现可以完全排除。

后,将foreign key(hospitalID) references hospital on delete restrict改为

foreign key(hospitalID) references hospital(hospitalID) on delete restrict

创建成功。

MYSQL建立外键失败几种情况记录Can't create table不能创建表

当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。 像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,...
  • qq_20545159
  • qq_20545159
  • 2015年01月01日 10:25
  • 1411

Mysql安装udf调用系统程序问题解决

安装udf调用系统程序,在使用编译出的lib_mysqludf_sys.so遇到了 1. failed:FUNCTION ramsdb.sys_exec does not exist! 2. E...
  • u010543785
  • u010543785
  • 2016年12月05日 18:05
  • 1433

MySQL5.70安装过程及发现问题解决方案

一、如何安装? 1、【运行】->【cmd】打开小黑窗口。定位到MySQL安装目录【我的D:\Program Files\mysql-5.7.9-winx64】的bin目录下,输入【mysqld -...
  • ChanningZhao
  • ChanningZhao
  • 2015年12月18日 16:23
  • 5674

MySQL启动故障处理一例(errno 13)

之前在系统上装了个MySQL用于测试,今天发现启动mysqld_safe进程的时候报错,如下所示: [root@bak local]# mysqld_safe & [1] 2631 [root...
  • aaron8219
  • aaron8219
  • 2014年10月17日 10:41
  • 2082

MySQL数据库表的基本操作——创建表CREATE TABLE

在操作数据库表之前要先选择数据库,USE
  • u011701678
  • u011701678
  • 2013年08月31日 13:14
  • 28821

wfuzz 在 RedHat OS 上试用(一)

1、https://code.google.com/p/wfuzz/downloads/list 下载wfuzz,解压 2、运行命令: [root@localhost wfuzz-read-only]...
  • kezhen
  • kezhen
  • 2014年03月19日 13:45
  • 4285

MySQL Create Table语句的应用与语法

以下的文章主要介绍的是MySQL Create Table语句的实际用法与MySQL Create Table语句的基本语法的介绍,如果你对其具体的操作步骤感兴趣的话,你就可以对以下的文章来一个“大阅...
  • weiyuefei
  • weiyuefei
  • 2016年04月14日 20:26
  • 512

mysql-5.7.12-winx64安装的时候无法启动服务问题

1.从官网下载最新版的mysql-5.7.12-winx64便携版,解压到需要安装的目录下(我的是解压在:D:\sw),目录结构如下: 2.在该目录下创建一个名为data的空文件夹和一个my.in...
  • yaowuliu
  • yaowuliu
  • 2016年04月12日 15:43
  • 9637

【Python】pip - 安装第三方包的神器

使用Python,肯定希望使用大量成熟的第三方包,从而快速用到自己的项目。 还在一个个寻找,手动下载吗? pip就是这样一个神器,自动搜索、下载和安装第三方包: 1,首先请安装pip自己,...
  • ghxbob
  • ghxbob
  • 2015年10月17日 22:57
  • 11155

JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)

java redis 数据同步Gearman
  • huangjinjin520
  • huangjinjin520
  • 2017年12月11日 19:49
  • 64
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL:Can't create table 'tablename' (errno: 150)
举报原因:
原因补充:

(最多只允许输入30个字)