【问题标题】:Trying to create tables getting error尝试创建表时出错
【发布时间】: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指标

标签: mysql syntax


【解决方案1】:

我对 MySql 不是很熟悉,但是是否有必要为 Integer 列添加长度?你是说第一列的类型是

整数 (11)

【讨论】:

  • 这并不总是必要的,但为了匹配已经存在的表,我需要定义相同的值,实际上我终于让它工作了,我不知道我做了什么,我只是不断删除空格如果有回车或制表符,我为所有 VARCHAR 类型定义了值...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2016-07-12
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多