【发布时间】:2015-03-22 17:47:06
【问题描述】:
我找不到语法错误:
Drop Table if Exists Classes;
Drop Table if Exists Grades;
Drop Table if Exists Faculty;
Drop Table if Exists Students;
CREATE TABLE Faculty (StaffID INTEGER( 11 ),
StaffFirstName VARCHAR( 50 ),
StaffLastName VARCHAR( 50 ),
StaffPhone VARCHAR, CONSTRAINT PRIMARY KEY (StaffID) ) ENGINE = innodb;
CREATE TABLE Students (
StudentID INTEGER( 11 ) NOT NULL ,
StudentFirstName VARCHAR( 50 ) NOT NULL ,
StudentLastName VARCHAR( 50 ) NOT NULL ,
StudentPhone VARCHAR NOT NULL,
CONSTRAINT PRIMARY KEY (StudentID)
) ENGINE = innodb ;
CREATE TABLE Classes (
ClassID VARCHAR NOT NULL ,
ClassName VARCHAR( 50 ) NOT NULL ,
CONSTRAINT PRIMARY KEY (ClassID)
) ENGINE = innodb ;
CREATE TABLE Grades (
StaffID INTEGER( 11 ) NOT NULL ,
StudentID INTEGER( 11 ) NOT NULL ,
ClassID VARCHAR (11)NOT NULL ,
Grade VARCHAR( 2 ),
CONSTRAINT PRIMARY KEY (StaffID, StudentID, ClassID),
FOREIGN KEY (StaffID) references Faculty(StaffID),
FOREIGN KEY (StudentID) references Students(StudentID),
FOREIGN KEY (ClassID) references Classes(ClassID)
) ENGINE = innodb ;'
我试过去掉空格和逗号并添加一些我找不到的地方。这是错误:
CREATE TABLE Faculty (StaffID INTEGER( 11 ),
StaffFirstName VARCHAR( 50 ),
StaffLastName VARCHAR( 50 ),
StaffPhone VARCHAR, CONSTRAINT PRIMARY KEY (StaffID) ) ENGINE = innodb;
MySQL 说:
文档 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 ' CONSTRAINT PRIMARY KEY (StaffID) ) ENGINE = innodb' 附近使用正确的语法
【问题讨论】:
-
您的 StaffPhone VARCHAR 列不应该有一个长度,例如VARCHAR(11) ?
-
不是必须的,我其实是拿出了我的NOT NULL指标