简体   繁体   English

我无法使此.sql文件在MySQL中成功运行?

[英]I cannot get this .sql file to run successfully in MySQL?

MySQL CMD Client will run this file but get half way through and complain my syntax is wrong i have looked over and changed bits in it all day but just cannot find the issue. MySQL CMD Client将运行该文件,但无法完成,并抱怨我的语法错误。我整天都在检查并更改了其中的位,但找不到问题。

I know again its probably a very easily answered question but after looking at it all day its time for a fresh pair of eyes to have a look for me. 我再次知道这可能是一个非常容易回答的问题,但是整天看着它之后,又有了新的眼睛来找我。 Please help! 请帮忙!

DROP DATABASE FIFAWC2010;

CREATE DATABASE FIFAWC2010;

USE FIFAWC2010;

CREATE TABLE VENUE(
    VENUE_ID CHAR(3),
    LOC_COORDS VARCHAR(50),
    CITY VARCHAR(20),
    VENUE_NAME VARCHAR(20),
    MAX_CAPACITY NUMERIC(9),
    PRIMARY KEY(VENUE_ID)
);

CREATE TABLE REFEREE(
    REF_ID CHAR(10),
    REF_FNAME VARCHAR(20),
    REF_SNAME VARCHAR(20),
    NATIONALITY VARCHAR(20),
    PRIMARY KEY(REF_ID)
);

CREATE TABLE MATCH(
    MATCH_ID CHAR(11),
    VENUE_ID CHAR(3),
    MATCH_DATE DATE,
    KICK_OFF TIME,
    FINAL_SCORE VARCHAR(7),
    REF_ID CHAR(10),
    VENUE_ATTEN NUMERIC(9),
    PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID),

);

CREAT TABLE GROUP(
    GROUP_ID CHAR(1),
    MATCH_ID VARCHAR(28),
    PRIMARY KEY(GROUP_ID),

);

CREATE TABLE COUNTRY(
    COUNTRY_ID VARCHAR(20), 
    GROUP_ID CHAR(1),
    PRIMARY KEY(COUNTRY_ID),

);

CREATE TABLE PLAYER(
    PLAYER_ID CHAR(10), 
    PLAYER_FNAME VARCHAR(20), 
    PLAYER_SNAME VARCHAR(20), 
    POSITION VARCHAR(10), 
    MATCH_ID CHAR(11),
    COUNRTY_ID VARCHAR(20),
    PRIMARY KEY(PLAYER_ID),

);

COMMIT;

Thank you! 谢谢! :) Ash. :)灰。

UPDATE: Sorry i pasted the wrong code, this is the code i am using and having issues with: 更新:对不起,我粘贴了错误的代码,这是我正在使用的代码,但存在以下问题:

 DROP DATABASE FIFAWC2010;

    CREATE DATABASE FIFAWC2010;

    USE FIFAWC2010;

    CREATE TABLE VENUE(
        VENUE_ID CHAR(3),
        LOC_COORDS VARCHAR(50),
        CITY VARCHAR(20),
        VENUE_NAME VARCHAR(20),
        MAX_CAPACITY NUMERIC(9),
        PRIMARY KEY(VENUE_ID)
    );

    CREATE TABLE REFEREE(
        REF_ID CHAR(10),
        REF_FNAME VARCHAR(20),
        REF_SNAME VARCHAR(20),
        NATIONALITY VARCHAR(20),
        PRIMARY KEY(REF_ID)
    );

    CREATE TABLE MATCH(
        MATCH_ID CHAR(11),
        VENUE_ID CHAR(3),
        MATCH_DATE DATE,
        KICK_OFF TIME,
        FINAL_SCORE VARCHAR(7),
        REF_ID CHAR(10),
        VENUE_ATTEN NUMERIC(9),
        PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID),
        FOREIGN KEY(REF_ID) REFERENCES REFEREE(REF_ID)
    );

    CREAT TABLE GROUP(
        GROUP_ID CHAR(1),
        MATCH_ID VARCHAR(28),
        PRIMARY KEY(GROUP_ID),
        FOREIGN KEY(MATCH_ID) REFERENCES MATCH(MATCH_ID)
    );

    CREATE TABLE COUNTRY(
        COUNTRY_ID VARCHAR(20), 
        GROUP_ID CHAR(1),
        PRIMARY KEY(COUNTRY_ID),
        FOREIGN KEY(GROUP_ID) REFERENCES GROUP(GROUP_ID)
    );

    CREATE TABLE PLAYER(
        PLAYER_ID CHAR(10), 
        PLAYER_FNAME VARCHAR(20), 
        PLAYER_SNAME VARCHAR(20), 
        POSITION VARCHAR(10), 
        MATCH_ID CHAR(11),
        COUNRTY_ID VARCHAR(20),
        PRIMARY KEY(PLAYER_ID),
        FOREIGN KEY(COUNTRY_ID) REFERENCES COUNTRY(COUNTRY_ID), 
        FOREIGN KEY(MATCH_ID) REFERENCES MATCH(MATCH_ID)
    );

    COMMIT;

I get Error 1064 (42000) 4 times, and its on MATCH, GROUP, (MATCH_ID), (GROUP_ID). 我收到4次错误1064(42000),并且它在MATCH,GROUP,(MATCH_ID),(GROUP_ID)上。

Is this a syntax error with the Primary keys? 这是主键的语法错误吗?

My guess : having a , on the last line of a list... like this one: 我的猜测:有,在列表的最后一行......像这样的:

PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID),

change to 改成

PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID)

you have 4 of them. 你有四个。

I have managed to fix the error my self, it would seem that MATCH and GROUP are actually keywords that MySQL / SQL uses and cannot be used as the names of my tables, I installed MySQL WorkBench and it will underline errors for you. 我已经设法解决了这个错误,似乎MATCH和GROUP实际上是MySQL / SQL使用的关键字,不能用作表的名称,我安装了MySQL WorkBench,它将为您加底划线。

Also to create a composite key with a Foreign Key, you first create the variable for the data to sit in, use the foreign key syntax to get the data into the variable, then use the usual syntax for a composite key with the Foreign Key variable in place. 同样,要使用外键创建复合键,您首先要创建要放入数据的变量,使用外键语法将数据放入变量中,然后对具有外键变量的复合键使用常规语法到位。

Thank you everyone for your help! 谢谢你们每一个人的帮助!

Ash. 灰。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM