MariaDB错误4161(HY000):未知数据类型

23c0lvtd  于 2023-04-06  发布在  其他
关注(0)|答案(2)|浏览(282)

当我尝试使用外键创建表时,出现未知数据类型错误。我不确定我的语法是否错误?确切的错误消息是:第14行出现错误4161(HY000):未知数据类型:'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
        );
zzwlnbp8

zzwlnbp81#

如果你想在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
        );
w46czmvw

w46czmvw2#

您看到的错误消息表明,您在P1_Player表中用于外键约束的数据类型可能存在问题。请再次检查您是否为外键列使用了有效的数据类型,如INT或VARCHAR。
此外,请确保Player表中引用列的数据类型与P1_Player表中外键列的数据类型匹配。例如,如果Player表中的PlayerID列定义为INT,则P1_Player表中的外键列也应定义为INT。
下面是一个如何使用外键约束创建两个表的示例:CREATE TABLE Player(PlayerID INT PRIMARY KEY,PlayerName VARCHAR(50));
CREATE TABLE P1_Player(MatchID INT,PlayerID INT,Score INT,FOREIGN KEY(PlayerID)REFERENCES Player(PlayerID));
在此示例中,Player表中的PlayerID列定义为INT,P1_Player表中的外键列也定义为INT。FOREIGN KEY约束引用Player表中的PlayerID列。

相关问题