1
DROP TABLE IF EXISTS members;
CREATE TABLE members (
    Member_ID char(10) NOT NULL default '',
    Provider_ID char(10) NOT NULL default '',
    First_Name varchar(30) NOT NULL default '',
    Middle_Initial char(1) NOT NULL default '',
    Last_Name varchar(40) NOT NULL default '',
    Address varchar(100) NOT NULL default '',
    City varchar(100) NOT NULL default '',
    State char(2) NOT NULL default '',
    Zip varchar(5) NOT NULL default '',
    PRIMARY KEY  (Member_ID),
    FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)
) ;

DROP TABLE IF EXISTS provider;
CREATE TABLE provider (
    Provider_ID char(10) NOT NULL default '',
    Provider_Name varchar(50) NOT NULL default '',
    Address varchar(100) NOT NULL default '',
    City varchar(100) NOT NULL default '',
    State char(2) NOT NULL default '',
    Zip char(5) NOT NULL default '',
    PRIMARY KEY (Provider_ID)
) ;




DROP TABLE IF EXISTS procedures;
CREATE TABLE procedures (
    Procedure_ID char(10) NOT NULL default '',
    Doctor_ID char(10) NOT NULL default '',
    Member_ID char(10) NOT NULL default '',
    Procedure_Type_ID char(10) NOT NULL default '',
    Procedure_Name varchar(50) NOT NULL default '',
    Cost int(10) NOT NULL default '0',
    Date_Executed date NOT NULL default '2000-01-01',
    PRIMARY KEY(Procedure_ID),
    FOREIGN KEY(DOCTOR_ID) REFERENCES DOCTOR(DOCTOR_ID),
    FOREIGN KEY(MEMBER_ID) REFERENCES MEMBER(MEMBER_ID),
    FOREIGN KEY(PROCEDURE_TYPE_ID) REFERENCES PROCEDURE_TYPE(PROCEDURE_TYPE_ID)
) ;




DROP TABLE IF EXISTS procedure_type;
CREATE TABLE procedure_type (
    Procedure_Type_ID char(10) NOT NULL default '',
    Procedre_Type_Name varchar(50) NOT NULL default '',
    Procedure_Description varchar(255) NOT NULL default '',
    Procedure_ID char(10) NOT NULL default '',
    PRIMARY KEY(Procedure_Type_ID),
    FOREIGN KEY(PROCEDURE_ID) REFERENCES PROCEDURES(PROCEDURE_ID)
) ;







DROP TABLE IF EXISTS doctor_type;
CREATE TABLE doctor_type (
    Type_ID char(10) NOT NULL default '',
    Type_Name varchar(50) NOT NULL default '',
    Type_Description varchar(255) NOT NULL default '',
    PRIMARY KEY(Type_ID)
) ;





DROP TABLE IF EXISTS doctor;
CREATE TABLE doctor (
    Doctor_ID char(10) NOT NULL default '',
    Type_ID char(10) NOT NULL default '',
    Doctor_Name varchar(50) NOT NULL default '',
    Address varchar(100) NOT NULL default '',
    City varchar(100) NOT NULL default '',
    State char(2) NOT NULL default '',
    Zip char(5) NOT NULL default '',
    PRIMARY KEY(Doctor_ID),
    FOREIGN KEY(TYPE_ID) REFERENCES DOCTOR_TYPE(TYPE_ID)
) ;

错误 1005 (HY000): 无法创建表 'thunderhawk.members' (errno: 150)

有任何想法吗?

我知道这是一个外键问题。我似乎遵循外键语法......

4

4 回答 4

0

这个问题是一个骗局:

MySQL:无法创建表(错误号:150)

错误消息准确地告诉您问题是什么:thunderhawk.members由于错误号 (errno) 150 无法创建表,将违反外键约束:

FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)

members在创建表之前不能创建provider表,因为表对members表有外键依赖provider

于 2021-12-26T01:58:22.707 回答
-1

通常,如果 dbms 无法创建表,则可能出现以下问题: a) dbms 进程没有写入数据目录的写入权限,或者该文件夹的磁盘配额已超出。b) 文件系统已满,没有空间可将任何数据写入文件。

检查您的 mysqld.log 以获取更多详细信息。

于 2011-05-07T00:56:25.180 回答
-1

首先需要确保检查两个表是否需要具有相同的存储类型,如 InnoDB。

在这里看到一个参考:http: //verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/

于 2011-05-07T01:09:11.787 回答
-1

试试这个代码:

DROP TABLE IF EXISTS 成员;

CREATE TABLE members (
    Member_ID char(10) NOT NULL default 0,
    Provider_ID char(10) NOT NULL default 0,
    First_Name varchar(30) NOT NULL default 0,
    Middle_Initial char(1) NOT NULL default 0,
    Last_Name varchar(40) NOT NULL default 0,
    Address varchar(100) NOT NULL default 0,
    City varchar(100) NOT NULL default 0,
    State char(2) NOT NULL default 0,
    Zip varchar(5) NOT NULL default 0,
    PRIMARY KEY  (Member_ID),
     FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)
) ;
于 2014-12-02T13:14:29.583 回答