首页 > 解决方案 > 如何创建外键?

问题描述

我正在尝试从我的用户表中创建一个外键“idUsers”。我希望能够在我的画廊表中使用它。每当我尝试时,我都会收到错误:

#1005 - 无法创建表useraccountsusers(errno: 150 "外键约束格式不正确")

CREATE TABLE users (
    idUsers int(11) AUTO_INCREMENT PRIMARY KEY not null,
    uidUsers TINYTEXT NOT NULL,
    emailUsers  TINYTEXT NOT NULL,
    pwdUsers  LONGTEXT NOT NULL,
    about_me varchar (228) NOT Null,
    FOREIGN KEY (idUsers) REFERENCES users(idUsers)
);

我希望它创建表,但实际输出是错误:

#1005 - 无法创建表useraccountsusers(错误号:150“外键约束格式不正确”)。

标签: mysql

解决方案


在这种情况下,您的 uidUsers 正在引用(或者更好的是,您希望它引用)同一张表上的主键。在您的图库中,您需要有字段 userId,它指向用户表中的 idUsers。因此,表库中的 userId 是指向正确用户的外键。你可能想要这样的东西(注意画廊表中指向用户的外键)

CREATE TABLE users ( 
  idUsers int(11) AUTO_INCREMENT PRIMARY KEY not null, 
  emailUsers TINYTEXT NOT NULL, 
  pwdUsers LONGTEXT NOT NULL, 
  about_me varchar (228) NOT Null
);

CREATE TABLE gallery (
  idGallery int(11) AUTO_INCREMENT PRIMARY KEY not null, 
  idUser int(11) not null,
  FOREIGN KEY (idUser) REFERENCES users(idUsers)
);

推荐阅读