【问题标题】:I receive a few errors in mySQL and only a few tables appear我在 mySQL 中收到了一些错误,并且只出现了几个表
【发布时间】:2021-06-15 09:56:22
【问题描述】:

我对此有点陌生,我收到了一些错误,我的数据库(phpmyadmin)中只出现了 4 个表。你能帮忙吗?

#@(#) script.ddl

DROP TABLE IF EXISTS collect;
DROP TABLE IF EXISTS build;
DROP TABLE IF EXISTS ROBOT;
DROP TABLE IF EXISTS PART;
DROP TABLE IF EXISTS EMPLOYEE_CAR;
DROP TABLE IF EXISTS EMPLOYEE;
DROP TABLE IF EXISTS DOWNLOADED_PART;
DROP TABLE IF EXISTS CAR;
DROP TABLE IF EXISTS MANIFACTURER;
DROP TABLE IF EXISTS CONTRACT;
DROP TABLE IF EXISTS WAREHOUSE;
DROP TABLE IF EXISTS PART_PROVIDER;
DROP TABLE IF EXISTS DISTRIBUTOR;
DROP TABLE IF EXISTS CEO;
CREATE TABLE CEO
(
    name varchar (255) NOT NULL,
    surname varchar (255) NOT NULL,
    mobile_number int NOT NULL,
    email_address varchar (255) NOT NULL,
    owned_factory_count int NOT NULL,
    PRIMARY KEY(mobile_number)
);

CREATE TABLE DISTRIBUTOR
(
    company_id int NOT NULL,
    company_name varchar (255) NOT NULL,
    country varchar (255) NOT NULL,
    contact_phone int NOT NULL,
    email_address varchar (255) NOT NULL,
    PRIMARY KEY(company_id)
);

CREATE TABLE PART_PROVIDER
(
    company_name int NOT NULL,
    country varchar (255) NOT NULL,
    contact_phone int NOT NULL,
    email_address varchar (255) NOT NULL,
    PRIMARY KEY(company_name)
);

CREATE TABLE WAREHOUSE
(
    address varchar (255) NOT NULL,
    capacity int NOT NULL,
    storage_type char (10) NOT NULL,
    PRIMARY KEY(storage_type),
    CHECK(storage_type in ('parts', 'cars'))
);

CREATE TABLE CONTRACT
(
    contract_id int NOT NULL,
    date date NOT NULL,
    car_count int NOT NULL,
    price double precision NOT NULL,
    contract_status char (8) NOT NULL,
    fk_DISTRIBUTORcompany_id int NOT NULL,
    fk_CEOmobile_number int NOT NULL,
    PRIMARY KEY(contract_id),
    CHECK(contract_status in ('accepted', 'declined', 'on hold')),
    CONSTRAINT applies for FOREIGN KEY(fk_DISTRIBUTORcompany_id) REFERENCES DISTRIBUTOR (company_id),
    CONSTRAINT accept FOREIGN KEY(fk_CEOmobile_number) REFERENCES CEO (mobile_number)
);

CREATE TABLE MANIFACTURER
(
    group varchar (255) NOT NULL,
    rank int NOT NULL,
    country varchar (255) NOT NULL,
    contact_phone int NOT NULL,
    vehicles_count int NOT NULL,
    fk_CEOmobile_number int NOT NULL,
    PRIMARY KEY(group),
    CONSTRAINT run FOREIGN KEY(fk_CEOmobile_number) REFERENCES CEO (mobile_number)
);

CREATE TABLE CAR
(
    id int NOT NULL,
    group varchar (255) NOT NULL,
    model varchar (255) NOT NULL,
    seats_count int NOT NULL,
    manifacture_date date NOT NULL,
    price double precision NOT NULL,
    gearbox char (10) NOT NULL,
    fuel_type char (11) NOT NULL,
    body_type char (11) NOT NULL,
    fk_WAREHOUSEstorage_type char (5) NOT NULL,
    PRIMARY KEY(id),
    CHECK(gearbox in ('automatic', 'mechanical')),
    CHECK(body_type in ('sedan', 'universal', 'hatchback', 'coupe', 'convertible')),
    CHECK(fuel_type in ('gasoline', 'electricity', 'diesel', 'hybrid')),
    CONSTRAINT is stored in FOREIGN KEY(fk_WAREHOUSEstorage_type) REFERENCES WAREHOUSE (storage_type)
);

CREATE TABLE DOWNLOADED_PART
(
    id int NOT NULL,
    name varchar (255) NOT NULL,
    quantity int NOT NULL,
    price double precision NOT NULL,
    quality char (6) NOT NULL,
    fk_WAREHOUSEstorage_type char (5) NOT NULL,
    fk_MANIFACTURERgroup varchar (255) NOT NULL,
    fk_PART_PROVIDERcompany_name int NOT NULL,
    PRIMARY KEY(id),
    CHECK(quality in ('high', 'medium', 'low')),
    CONSTRAINT is stored in FOREIGN KEY(fk_WAREHOUSEstorage_type) REFERENCES WAREHOUSE (storage_type),
    CONSTRAINT buys FOREIGN KEY(fk_MANIFACTURERgroup) REFERENCES MANIFACTURER (group),
    CONSTRAINT supply FOREIGN KEY(fk_PART_PROVIDERcompany_name) REFERENCES PART_PROVIDER (company_name)
);

CREATE TABLE EMPLOYEE
(
    id int NOT NULL,
    name varchar (255) NOT NULL,
    surname varchar (255) NOT NULL,
    role varchar (255) NOT NULL,
    job_start date NOT NULL,
    contact_phone int NOT NULL,
    fk_MANIFACTURERgroup varchar (255) NOT NULL,
    PRIMARY KEY(id),
    CONSTRAINT work at FOREIGN KEY(fk_MANIFACTURERgroup) REFERENCES MANIFACTURER (group)
);

CREATE TABLE EMPLOYEE_CAR
(
    name varchar (255) NOT NULL PRIMARY KEY,
    surname varchar (255) NOT NULL PRIMARY KEY,
    id int NOT NULL,
    group varchar (255) NOT NULL,
    model varchar (255) NOT NULL,
    when_manifactured date NOT NULL,
    fk_EMPLOYEEid int NOT NULL,
    CONSTRAINT own FOREIGN KEY(fk_EMPLOYEEid) REFERENCES EMPLOYEE (id)
);

CREATE TABLE PART
(
    id int NOT NULL,
    name varchar (255) NOT NULL,
    part_status char (10) NOT NULL,
    fk_WAREHOUSEstorage_type char (5) NOT NULL,
    fk_CARid int NOT NULL,
    PRIMARY KEY(id),
    CHECK(part_status in ('finished', 'unfinished')),
    CONSTRAINT is stored in FOREIGN KEY(fk_WAREHOUSEstorage_type) REFERENCES WAREHOUSE (storage_type),
    CONSTRAINT contain FOREIGN KEY(fk_CARid) REFERENCES CAR (id)
);

CREATE TABLE ROBOT
(
    id int NOT NULL,
    action varchar (255) NOT NULL,
    maintanance_period int NOT NULL,
    longevity int NOT NULL,
    fk_MANIFACTURERgroup varchar (255) NOT NULL,
    fk_responsible_employee_id int NOT NULL,
    PRIMARY KEY(id),
    CONSTRAINT operate in FOREIGN KEY(fk_MANIFACTURERgroup) REFERENCES MANIFACTURER (group),
    CONSTRAINT control FOREIGN KEY(fk_responsible_employee_id) REFERENCES EMPLOYEE (id)
);

CREATE TABLE build
(
    fk_PARTid int NOT NULL,
    fk_EMPLOYEEid int NOT NULL,
    PRIMARY KEY(fk_PARTid, fk_EMPLOYEEid),
    CONSTRAINT build FOREIGN KEY(fk_PARTid) REFERENCES PART (id)
);

CREATE TABLE collect
(
    fk_PARTid int NOT NULL,
    fk_ROBOTid int NOT NULL,
    PRIMARY KEY(fk_PARTid, fk_ROBOTid),
    CONSTRAINT collect FOREIGN KEY(fk_PARTid) REFERENCES PART (id)
);

我收到以下错误: 错误 静态分析:

在分析过程中发现了 3 个错误。

应使用逗号或右括号。 (在位置 116 接近“精度”) 出乎意料的声明开头。 (靠近位置 160 的“8”) 无法识别的语句类型。 (在位置 163 的“NOT NULL”附近) SQL 查询:复制

创建表合同 (contract_id int NOT NULL, date date NOT NULL, car_count int NOT NULL, price double precision NOT NULL, contract_status char (8) NOT NULL, fk_DISTRIBUTORcompany_id int NOT NULL, fk_CEOmobile_number int NOT NULL, PRIMARY KEY(contract_id ), CHECK(contract_status in ('accepted', 'declined', 'on hold')), CONSTRAINT 申请 FOREIGN KEY(fk_DISTRIBUTORcompany_id) REFERENCES DISTRIBUTOR (company_id), CONSTRAINT accept FOREIGN KEY(fk_CEOmobile_number) REFERENCES CEO (mobile_number) )

MySQL 说:文档

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 12 行的“for FOREIGN KEY(fk_DISTRIBUTORcompany_id) REFERENCES DISTRIBUTOR (company_id)...”附近使用正确的语法

【问题讨论】:

  • 我不能 100% 确定我的想法,但我认为您不需要(或不想要)“精确”这个词。我会在它出现的几张桌子上删除它,看看是否能解决问题。当然,当你一次性运行一批命令时,通常只需要一个语法错误或其他问题,就会导致报告多个不同的错误

标签: mysql phpmyadmin


【解决方案1】:

手动将每个create table 运行到mysql 中,这将有助于确定错误在哪里。然后根据需要更正代码。如果您在创建表时获得成功,那么该表工作正常。

您的 sql 代码中存在错误。调试吧!

【讨论】:

    【解决方案2】:

    当您尝试在创建关系表之前添加约束时,通常会出现此错误。 尝试创建所有表,然后添加它们的键,约束如下:

    CREATE TABLE CONTRACT
    (
        contract_id int NOT NULL,
        date date NOT NULL,
        car_count int NOT NULL,
        price double precision NOT NULL,
        contract_status char (8) NOT NULL,
        fk_DISTRIBUTORcompany_id int NOT NULL,
        fk_CEOmobile_number int NOT NULL,
        CHECK(contract_status in ('accepted', 'declined', 'on hold')),
    );    
    
    ALTER TALBE `CONTRACT`
    ADD PRIMARY KEY(contract_id),
    ADD CONSTRAINT applies for FOREIGN KEY(fk_DISTRIBUTORcompany_id) REFERENCES DISTRIBUTOR (company_id),
        CONSTRAINT accept FOREIGN KEY(fk_CEOmobile_number) REFERENCES CEO (mobile_number)
    

    其他表也一样。

    【讨论】:

      猜你喜欢
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2022-01-08
      • 2017-06-15
      • 2013-11-04
      相关资源
      最近更新 更多