简体   繁体   中英

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.

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).

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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