MySQL 未正确从导入的 SQL 文件创建表

Posted

技术标签:

【中文标题】MySQL 未正确从导入的 SQL 文件创建表【英文标题】:MySQL is not creating the table from an imported SQL file correctly 【发布时间】:2021-06-18 16:43:13 【问题描述】:

我将 Microsoft SQL 创建表语法转换为 mysql 并让 MySQL 导入 SQL 文件,我不断收到错误消息。这是代码:

CREATE TABLE Adminstration (
    AdminID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ContactID int constraint fk_Admin_Contact foreign key (ContactID) references ContactInfo(ContactID),
    EEID int constraint fk_Admin_Employee foreign key (EEID) references Employees(EEID),
    LName VARCHAR(30) NOT NULL,
    FName VARCHAR(30) NOT NULL,
    EContactID int constraint fk_Admin_EContact foreign key (EContactID) references EmergencyContacts(ECID),
    Position VARCHAR(50),
    DOB DATE
);

但是,我不断收到一条错误消息:

contraitnt" 对于此服务器版本在此位置无效,需要 AS、AUTO_INCREMENT、CHECK

这有什么问题?

【问题讨论】:

你为 MySQL 问题标记了哪些 SQL Server? 也许你有一个拼写错误contraitnt 我推荐阅读产品文档... 列约束(例如您尝试为 ContactID 定义的约束)和表约束在语法上有所不同。您使用了后一种语法 - 作为列约束无效。根据定义,列约束只会与您正在定义的列相关联。 【参考方案1】:

你犯了一个小错误,约束在列定义中无效。

CREATE TABLE Adminstration (
    AdminID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ContactID int,
    constraint fk_Admin_Contact foreign key (ContactID) references ContactInfo(ContactID),
    EEID int,
    constraint fk_Admin_Employee foreign key (EEID) references Employees(EEID),
    LName VARCHAR(30) NOT NULL,
    FName VARCHAR(30) NOT NULL,
    EContactID int
    ,constraint fk_Admin_EContact foreign key (EContactID) references EmergencyContacts(ECID),
    Position VARCHAR(50),
    DOB DATE
);

【讨论】:

以上是关于MySQL 未正确从导入的 SQL 文件创建表的主要内容,如果未能解决你的问题,请参考以下文章