Я не могу заставить этот файл .sql успешно работать в MySQL?

0

MySQL CMD Client будет запускать этот файл, но получить половину пути и жаловаться, что мой синтаксис неверен, я просмотрел и изменил биты в нем весь день, но просто не могу найти проблему.

Я снова знаю его, вероятно, очень легко ответивший вопрос, но, глядя на него весь день, настало время увидеть свежую пару глаз, чтобы посмотреть на меня. Пожалуйста, помогите!

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;

Спасибо!:) Эш.

UPDATE: Извините, что я вставил неправильный код, это код, который я использую и имею проблемы с:

 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;

Я получаю ошибку 1064 (42000) 4 раза, а ее по MATCH, GROUP, (MATCH_ID), (GROUP_ID).

Является ли это синтаксической ошибкой с основными ключами?

  • 2
    Ошибка ...
  • 1
    Какую строку это дает как наличие ошибки?
Показать ещё 2 комментария
Теги:
database
syntax

2 ответа

5
Лучший ответ

Мое предположение: наличие , в последней строке списка... как этот:

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

измените на

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

у вас их 4.

  • 0
    +1: но, вероятно, не предполагается, что оба столбца ссылаются на один и тот же столбец внешнего ключа
  • 0
    @OMG - согласен, я искал синтаксические ошибки, а не логические.
Показать ещё 4 комментария
0

Мне удалось исправить ошибку самостоятельно, казалось бы, что MATCH и GROUP на самом деле являются ключевыми словами, которые использует MySQL/SQL и не могут использоваться в качестве имен моих таблиц, я установил MySQL WorkBench, и это будет подчеркивать ошибки для вас,

Кроме того, чтобы создать составной ключ с внешним ключом, сначала создайте переменную для данных, в которые нужно сидеть, используйте синтаксис внешнего ключа, чтобы получить данные в переменной, а затем используйте обычный синтаксис для составного ключа с Переменная внешнего ключа.

Спасибо всем за вашу помощь!

Ash.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню