【问题标题】:mySql errno: 150 Create table statement inside [duplicate]mySql errno:150 Create table statement inside [重复]
【发布时间】:2011-08-20 13:52:20
【问题描述】:
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)

有什么想法吗?

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

【问题讨论】:

  • PROVIDERPROVIDER_ID的数据类型是什么?
  • 根据mysql-error-1005 标签中的信息,问题是外键约束。或者您可以查看右侧的众多相关链接。
  • PROVIDER_ID IS char(10) 只是链接的所有其他变量。如何检查 lowercasetablenames 变量?
  • 这能回答你的问题吗? MySQL: Can't create table (errno: 150)

标签: mysql sql mysql-error-1005


【解决方案1】:

这个问题是骗人的:

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

错误信息告诉你问题出在哪里:table thunderhawk.members cannot be created because of error number (errno) 150, a foreign key constraint would betruded:

FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)

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

【讨论】:

    【解决方案2】:

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

    查看您的 mysqld.log 了解更多详细信息。

    【讨论】:

    • 我可以创建简单的表格。我相信这与我的外键分配或我的删除表命令有关。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      试试这个代码:

      如果存在成员,则删除表;

      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)
      ) ;
      

      【讨论】:

        猜你喜欢
        • 2020-08-11
        • 2020-10-02
        • 2015-12-18
        • 1970-01-01
        • 2011-01-29
        • 2020-03-23
        • 2011-07-18
        • 2018-04-14
        • 2016-02-02
        相关资源
        最近更新 更多