首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#1215 -即使列完全相同,也不能添加外键约束错误

问#1215 -即使列完全相同,也不能添加外键约束错误
EN

Database Administration用户
提问于 2018-12-30 16:04:38
回答 1查看 595关注 0票数 0

昨晚,我在SQL 中运行了phpMyAdmin命令,非常,类似于下面的命令来设置players表和由foreign key链接的games表。它工作正常,使games表中的D6成为foreign key。

代码语言:javascript
复制
CREATE TABLE players(
    google_id VARCHAR(36) PRIMARY KEY,
    display_name VARCHAR(255) NOT NULL,
    given_name VARCHAR(255) NOT NULL,
    family_name VARCHAR(255) NOT NULL,
    picture_url VARCHAR(2083) NOT NULL,
    leaderboard_initials VARCHAR(40),
    operating_system VARCHAR(255) NOT NULL,
    modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE games(
    game_id VARCHAR(255) PRIMARY KEY,
    google_id VARCHAR(36) NOT NULL,
    won INT(1) NOT NULL,
    score INT(10) NOT NULL,
    num_in_code INT(2) NOT NULL,
    num_colours INT(2) NOT NULL,
    num_guesses INT(2) NOT NULL,
    turn INT(2) NOT NULL,
    rank INT(10) NOT NULL,
    modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-然后让google_id成为游戏中的外键:

代码语言:javascript
复制
ALTER TABLE
    games ADD FOREIGN KEY(google_id) REFERENCES role(google_id);

今天,第三个命令给出了以下错误:

代码语言:javascript
复制
Error
SQL query:


ALTER TABLE
games ADD FOREIGN KEY(google_id) REFERENCES role(google_id)
MySQL said: 

#1215 - Cannot add foreign key constraint

我的google_id是完全相同的数据类型,所以这个答案对我没有帮助

我也读过这个答案,但没有发现我的三个查询有什么问题。

有人能发现我的错误吗?

编辑:对不起,这是一个错误。role应该是players

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-12-30 17:08:07

如果游戏表引用的是父表"players“中的google_id,则使用以下语法(除非根据SQL语句使用”角色“表建立外键):

代码语言:javascript
复制
ALTER TABLE
games ADD FOREIGN KEY(google_id) REFERENCES players(google_id);

此外,请检查角色表的DDL (如果存在)-数据类型、列google_id的宽度以及这两个表的mysql引擎。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/226023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档