MYSQL 创建带有外键的表产生错误

标签 mysql datatable foreign-keys foreign-key-relationship

尝试用外键创建一些新表,但我被卡住了,这是我收到的代码和错误,我认为它有一些东西 怎么处理我的外键?

#1064 - You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version for the
    right syntax to use near '(`CustomerID`),
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1' at line 10



DROP TABLE IF EXISTS `Customer`;
CREATE TABLE `Customer` (

    `CustomerID`            INT UNSIGNED AUTO_INCREMENT, 
    `Customer_Number`       VARCHAR(100), 
    `Customer_Name`         VARCHAR(100), 
    `Website`               VARCHAR(255), 
    `Logo`                  VARCHAR(100),

    PRIMARY KEY(`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;


    DROP TABLE IF EXISTS `Reports`;
    CREATE TABLE `Reports` (

        `ReportsID`             INT UNSIGNED AUTO_INCREMENT, 
        `Role`                  VARCHAR(70), 
        `Region`                VARCHAR(70), 
        `Inpection_Type`        VARCHAR(70), 
        `CustomerID`            INT UNSIGNED,
        `Report_Date`           DATE NOT NULL DEFAULT '0000-00-00',
        `Order_Date`            TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `Customer_Name`         VARCHAR(100),
        `Customer_Division`     VARCHAR(70),
        `Memo`                  VARCHAR(255),
        `Billing_Key`           VARCHAR(70),

        PRIMARY KEY(`ReportsID`),
        FOREIGN KEY (`CustomerID`) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;

    DROP TABLE IF EXISTS `CustomerContact`;
    CREATE TABLE `CustomerContact` (

        `ContactID`             INT UNSIGNED AUTO_INCREMENT,
        `CustomerID`            INT UNSIGNED,
        `Division`              VARCHAR(100), 
        `Contact`               VARCHAR(100), 
        `Address`               VARCHAR(255),
        `Phone`                 VARCHAR(100),
        `Fax`                   VARCHAR(100),
        `Email`                 VARCHAR(100),
        `Mobile`                VARCHAR(100),

        PRIMARY KEY(`ContactID`),
        FOREIGN KEY (`CustomerID) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;

最佳答案

在外键定义中,Logo 列后缺少逗号,CustomerID 列名称末尾缺少反引号。

修复这些问题并重新运行 DDL 后,您会发现 CustomerContact 表没有名为 CustomerID 的列,因此您也应该添加该列。

  DROP TABLE IF EXISTS `Customer`;
    CREATE TABLE `Customer` ( 
        `CustomerID`            INT UNSIGNED AUTO_INCREMENT,
        `Customer_Number`        VARCHAR(100),
        `Customer_Name`            VARCHAR(100),
        `Website`                VARCHAR(255),
        `Logo`                    VARCHAR(100),
        PRIMARY KEY(`CustomerID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;


    DROP TABLE IF EXISTS `CustomerContact`;
    CREATE TABLE `CustomerContact` (

        `ContactID`                INT UNSIGNED AUTO_INCREMENT,
        `Division`                VARCHAR(100),
        `Contact`                VARCHAR(100),
        `Address`                VARCHAR(255),
        `Phone`                    VARCHAR(100),
        `Fax`                    VARCHAR(100),
        `Email`                    VARCHAR(100),
        `Mobile`                VARCHAR(100),
        PRIMARY KEY(`ContactID`),
        CONSTRAINT FOREIGN KEY (`CustomerID`) REFERENCES Customer(`CustomerID`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8 AUTO_INCREMENT=1;

关于MYSQL 创建带有外键的表产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524585/

相关文章:

iphone - 升级xcode使用的sqlite3版本?

MySql 全文搜索使用 2 个字符的词

mysql - 如何使用 DQL 执行关系除法?

c# - 从 GridView 添加 DataRow 时如何捕获 ConstraintException?

c# - JSON 到数据表忽略数组

mysql - 在 MySql 中删除未命名的外键

MySQL多表删除语法

mysql - 如何获取 AWS EC2 MySQL 的数据库 url?

c# - 如何使用 C# 将 DataTable 值转换为 json?

python - SQLAlchemy ON DELETE SET NULL 同时使用辅助表