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命令后,数据库还是空的,没有表,为啥
如何正确地将数据从 *.csv 文件导入 mysql 数据库中的给定表