ОШИБКА MariaDB 4161 (HY000): неизвестный тип данных

Получение ошибки неизвестного типа данных при попытке создать таблицы с внешним ключом. Я не уверен, что мой синтаксис неверен? Точное сообщение об ошибке: ОШИБКА 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_# — допустимое имя столбца?

Nico Haase 04.04.2023 11:19

удаление знака фунта решило ошибку, спасибо!

beansogo 04.04.2023 11:36
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка находится в 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
        );

Другие вопросы по теме