【问题标题】:MySql issues using ENGINE = INNODB使用 ENGINE = INNODB 的 MySql 问题
【发布时间】:2016-09-17 13:37:45
【问题描述】:

首先,下面是我的代码。当我在学校的 mysql 服务器上运行它时,我得到了 ERROR 1005 (HY000)。尽管此错误仅发生在客户、订单和详细信息表中。我确实收到了一些警告。根据我所做的研究,这是由于我错误地实施了 innodb 造成的。任何帮助将不胜感激,尤其是因为这只是此作业的开始步骤之一。

drop table IF EXISTS employees;
drop table IF EXISTS parts;
drop table IF EXISTS customers;
drop table IF EXISTS orders;
drop table IF EXISTS odetails;
drop table IF EXISTS zipcodes;

create table employees
    (eno        numeric(4,0),
     ename      varchar(15),
     zip        numeric(5,0),
     hdate      date default null,
     primary key (eno),
     foreign key (zip) references zipcodes (zip)
    )ENGINE=InooDB;

create table parts
    (pno        numeric(5,0),
     pname      varchar(30),
     qoh        numeric(3,0),
     price      numeric(10,2),
     level      numeric(2,0),
     primary key (pno)
    )ENGINE=InnoDB;

create table customers
    (cno        numeric(4,0),
     cname      varchar(15),
     street     varchar(30),
     zip        numeric(5,0),
     phone      varchar(12),
     primary key (cno),
     foreign key (zip) references zipcodes (zip))
     ENGINE=InnoDB;

create table orders
    (ono        numeric(4,0),
     cno        numeric(4,0),
     eno        numeric(4,0),
     received   date default null,
     shipped    date default null,
     primary key (ono),
     foreign key (cno) references customers (cno),
     foreign key (eno) references employees (eno)
    )ENGINE=InnoDB;

create table odetails
    (ono        numeric(4,0),
     pno        numeric(5,0),
     qty        numeric(1,0),
     primary key (ono, pno),
     foreign key (ono) references orders (ono),
     foreign key (pno) references parts (pno)
    )ENGINE=InnoDB;

create table zipcodes
    (zip        numeric(5,0),
     city       varchar(15),
     primary key (zip)
    )ENGINE=InnoDB;

【问题讨论】:

  • 请阅读How to Ask 并在您的问题中包含所有相关的错误和警告。话虽如此,您的客户表通过外键引用邮政编码表,该外键仅在此脚本末尾创建,并且错误和警告都来自该问题。
  • 你有一个错字InooDB。您的数据类型也有点不标准。拍摄一个普通的简 INT 而不是小数(n,m)的 PK(以及其他异常,如您的邮政编码)
  • 哇,这一切都来自一个错字。切换到使用INT。还要感谢有关移动邮政编码的建议,忘记了。谢谢大家,我真的很感激。
  • 另一个提示:在大多数国家/地区,邮政编码应该是 varchars(例如,允许前导 0)。

标签: mysql innodb


【解决方案1】:

1005 -- 根据FOREIGN KEYs 以正确的顺序声明表。例如,先做zipcodes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2020-02-17
    • 2017-11-04
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多