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 文件创建表的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个mysql.sql文件存放建表语句和插入测试数据语句

给mysql导入.sql文件,用完source命令后,数据库还是空的,没有表,为啥

SQL Server 数据库项目未正确处理新脚本文件的创建

如何正确地将数据从 *.csv 文件导入 mysql 数据库中的给定表

使用命令将存储过程查询从 sql 文件导入 Oracle DB

SSIS 未正确从 Excel 导入 TEXT 列(整数导致 NULL 值)