【问题标题】:MySQL Database Error #1064 Syntax ErrorMySQL 数据库错误 #1064 语法错误
【发布时间】:2014-04-09 05:26:20
【问题描述】:

帮助! 我不断收到错误消息。

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 'MGRDATE 日期、主键 (DNUM)、外键 (MGRSSN) 附近 参考 EMPL' 在第 6 行

CREATE TABLE EMPLOYEE ( 
    SSN INT NOT NULL, 
    FNAME VARCHAR(15) NOT NULL, 
    MINIT VARCHAR(1) NOT NULL, 
    LNAME VARCHAR(15) NOT NULL, 
    BDATE DATE, 
    ADDRESS VARCHAR(50), 
    SEX VARCHAR(1), 
    SALARY INT NOT NULL, 
    SUPERSSN INT NOT NULL, 
    DNO INT NOT NULL, 
    PRIMARY KEY (SSN)
);

CREATE TABLE DEPARTMENT ( 
    DNUM INT NOT NULL, 
    DNAME VARCHAR(15) NOT NULL, 
    MGRSSN INT NOT NULL,
    INDEX (MSGSSN)
    MGRDATE DATE, 
    PRIMARY KEY (DNUM), 
    FOREIGN KEY (MGRSSN) 
        REFERENCES EMPLOYEE(SSN)
        ON DELETE CASCADE,
); 

CREATE TABLE WORKS_ON ( 
    SSN INT NOT NULL, 
    INDEX (SSN)
    PNO INT NOT NULL,
    INDEX (PNO) 
    HOURS INT NOT NULL, 
    FOREIGN KEY (SSN) 
        REFERENCES EMPLOYEE(SSN)
        ON DELETE CASCADE,
    FOREIGN KEY (PNO) 
        REFERENCES PROJECT(PINT)
        ON DELETE CASCADE,
); 

CREATE TABLE DEPT_LOCATION ( 
    DNUM INT NOT NULL, 
    DLOCATION VARCHAR(20) NOT NULL
);

CREATE TABLE DEPENDENT ( 
    SSN INT NOT NULL, 
    INDEX (SSN)
    DEPENDENT_NAME VARCHAR(10) NOT NULL, 
    SEX VARCHAR(1) NOT NULL, 
    DOB DATE, 
    RELATIONSHIP VARCHAR(10) NOT NULL,
    FOREIGN KEY (SSN) 
        REFERENCES EMPLOYEE(SSN)
        ON DELETE CASCADE,
);

CREATE TABLE PROJECT (
    PNAME VARCHAR(15) NOT NULL, 
    PINT INT NOT NULL, 
    PLOCATION VARCHAR(20) NOT NULL,
    INDEX (PLOCATION) 
    DNUM INT NOT NULL, 
    INDEX (DNUM)
    PRIMARY KEY (PINT), 
    FOREIGN KEY (PLOCATION) 
        REFERENCES DEPT_LOCATION(DLOCATION)
        ON DELETE CASCADE,
    FOREIGN KEY (DNUM) 
        REFERENCES “DEPARTMENT” (DNUM)
        ON DELETE CASCADE,
); 

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    您使用 , 很多地方,您应该在查询中删除 comma

    您应该更改下表:

    1.DEPARTMENT 
    2.WORKS_ON 
    3.DEPENDENT 
    4.PROJECT 
    

    您的查询:

     ON DELETE CASCADE,  -- -->remove the comma
    ); 
    

    改为:

     ON DELETE CASCADE
    ); 
    

    你应该在你的department 表中做spelling mistake,如下所示:

    您的查询:

        MGRSSN INT NOT NULL,
        INDEX (MSGSSN)
    

    改为:

          MGRSSN INT NOT NULL,    
          INDEX (MGRSSN) ,
    

    【讨论】:

      【解决方案2】:

      在您的代码中,您在某些行中遗漏了逗号(,),并且还放置了额外的逗号。

      在 DEPARTMENT 表中,您给列名 MRSSSN 并用作 INDEX (MSGSSN) 错误地使用 INDEX (MGRSSN) 而不是 INDEX (MSGSSN)。

      在 WORKS_ON 表中,您将外键放置在 PROJECT 表中,并尝试在 PROJECT 表之前创建 WORKS_ON 表。

      在 PROJECT 表中,您尝试将外键分配给 DEPT_LOCATION (DLOCATION),但在 DEPT_LOCATION 中没有将主键分配给 DLOCATION,因此应该会发生错误。

      请尝试以下代码。

      CREATE TABLE EMPLOYEE ( 
          SSN INT NOT NULL, 
          FNAME VARCHAR(15) NOT NULL, 
          MINIT VARCHAR(1) NOT NULL, 
          LNAME VARCHAR(15) NOT NULL, 
          BDATE DATE, 
          ADDRESS VARCHAR(50), 
          SEX VARCHAR(1), 
          SALARY INT NOT NULL, 
          SUPERSSN INT NOT NULL, 
          DNO INT NOT NULL, 
          PRIMARY KEY (SSN)
      );
      
      CREATE TABLE DEPARTMENT ( 
          DNUM INT NOT NULL, 
          DNAME VARCHAR(15) NOT NULL, 
          MGRSSN INT NOT NULL,
          INDEX (MGRSSN),
          MGRDATE DATE, 
          PRIMARY KEY (DNUM), 
          FOREIGN KEY (MGRSSN) 
              REFERENCES EMPLOYEE(SSN)
              ON DELETE CASCADE
      );
      
      CREATE TABLE DEPT_LOCATION ( 
          DNUM INT NOT NULL, 
          DLOCATION VARCHAR(20) NOT NULL, 
          PRIMARY KEY (DLOCATION)
      );
      
      CREATE TABLE DEPENDENT ( 
          SSN INT NOT NULL, 
          INDEX (SSN),
          DEPENDENT_NAME VARCHAR(10) NOT NULL, 
          SEX VARCHAR(1) NOT NULL, 
          DOB DATE, 
          RELATIONSHIP VARCHAR(10) NOT NULL,
          FOREIGN KEY (SSN) 
              REFERENCES EMPLOYEE(SSN)
              ON DELETE CASCADE
      );
      
      CREATE TABLE PROJECT (
          PNAME VARCHAR(15) NOT NULL, 
          PINT INT NOT NULL, 
          PLOCATION VARCHAR(20) NOT NULL,
          INDEX (PLOCATION),
          DNUM INT NOT NULL, 
          INDEX (DNUM),
          PRIMARY KEY (PINT), 
          FOREIGN KEY (PLOCATION) 
              REFERENCES DEPT_LOCATION(DLOCATION)
              ON DELETE CASCADE,
          FOREIGN KEY (DNUM) 
              REFERENCES DEPARTMENT (DNUM)
              ON DELETE CASCADE
      );  
      
      CREATE TABLE WORKS_ON ( 
          SSN INT NOT NULL, 
          INDEX (SSN),
          PNO INT NOT NULL,
          INDEX (PNO), 
          HOURS INT NOT NULL, 
          FOREIGN KEY (SSN) 
              REFERENCES EMPLOYEE(SSN)
              ON DELETE CASCADE,
          FOREIGN KEY (PNO) 
              REFERENCES PROJECT(PINT)
              ON DELETE CASCADE
      ); 
      

      有效。

      【讨论】:

        猜你喜欢
        • 2015-04-25
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        • 2016-09-29
        • 2014-01-08
        • 1970-01-01
        • 2017-05-06
        • 2018-03-05
        相关资源
        最近更新 更多