Получение ошибки неизвестного типа данных при попытке создать таблицы с внешним ключом. Я не уверен, что мой синтаксис неверен? Точное сообщение об ошибке: ОШИБКА 4161 (HY000) в строке 14: Неизвестный тип данных: «t_name», что означает, что ошибка возникает в таблице P1_Player.
DROP TABLE IF EXISTS P1_Player;
DROP TABLE IF EXISTS P1_Plays;
DROP TABLE IF EXISTS P1_Coach;
DROP TABLE IF EXISTS P1_Game;
DROP TABLE IF EXISTS P1_Team;
create table P1_Team
(t_name varchar(20),
primary key (t_name)
);
create table P1_Player
(fname varchar(20),
lname varchar(20),
DOB date,
jersey_# int,
t_name varchar(20),
primary key (fname, lname, DOB),
foreign key (t_name) references P1_Team (t_name)
on delete cascade
);
create table P1_Coach
(fname varchar(20),
lname varchar(20),
t_name varchar(20),
foreign key (t_name) references P1_Team (t_name)
on delete cascade
);
create table P1_Game
(t_name varchar(20),
game_date date,
game_time time,
primary key (t_name, game_date, game_time),
foreign key (t_name) references P1_Team (t_name)
on delete cascade
);
create table P1_Plays
(t_name varchar(20),
game_date date,
game_time time,
primary key (t_name, game_date, game_time),
foreign key (t_name, game_date, game_time) references P1_Game (t_name, game_date, game_time)
on delete cascade
);
удаление знака фунта решило ошибку, спасибо!
Ошибка находится в jersey_#
на create table P1_Player
, вы должны использовать обратную кавычку (`), если вы хотите использовать специальные символы в именах столбцов mysql/mariadb:
create table P1_Player
(fname varchar(20),
lname varchar(20),
DOB date,
`jersey_#` int,
t_name varchar(20),
primary key (fname, lname, DOB),
foreign key (t_name) references P1_Team (t_name)
on delete cascade
);
Что вы пытались решить проблему? Что заставляет вас думать, что
jersey_#
— допустимое имя столбца?