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).
Является ли это синтаксической ошибкой с основными ключами?
Мое предположение: наличие ,
в последней строке списка... как этот:
PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID),
измените на
PRIMARY KEY(MATCH_ID,VENUE_ID) REFERENCES VENUE(VENUE_ID)
у вас их 4.
Мне удалось исправить ошибку самостоятельно, казалось бы, что MATCH и GROUP на самом деле являются ключевыми словами, которые использует MySQL/SQL и не могут использоваться в качестве имен моих таблиц, я установил MySQL WorkBench, и это будет подчеркивать ошибки для вас,
Кроме того, чтобы создать составной ключ с внешним ключом, сначала создайте переменную для данных, в которые нужно сидеть, используйте синтаксис внешнего ключа, чтобы получить данные в переменной, а затем используйте обычный синтаксис для составного ключа с Переменная внешнего ключа.
Спасибо всем за вашу помощь!
Ash.