MySQL-添加索引、链接表

标签 mysql

我在数据库中有以下表格:

    CREATE TABLE `items_link` (
    `upc` varchar(15) NOT NULL DEFAULT '',
    PRIMARY KEY (`upc`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

然后,另一个表:

    CREATE TABLE `mws_data` (
    `ItemID` float NOT NULL AUTO_INCREMENT,
    `Status_response` varchar(15) DEFAULT '',
    `Id` varchar(15) NOT NULL DEFAULT '',
    `IdType` varchar(7) NOT NULL DEFAULT '',
    `IsMultASIN` tinyint(1) DEFAULT '0',
    `ASIN` varchar(20) DEFAULT '',
    `BrandAmazon` varchar(150) DEFAULT '',
    `Title` varchar(1000) DEFAULT '',
    `ProductGroup` varchar(150) DEFAULT '',
    `ImgURL` varchar(500) DEFAULT '',
    `PkgHeight` float DEFAULT NULL,
    `PkgWidth` float DEFAULT NULL,
    `PkgLength` float DEFAULT NULL,
    `PkgWeight` float DEFAULT NULL,
    `PackageQuantity` float DEFAULT NULL,
    `Unique_Entry_Id` datetime NOT NULL,
    PRIMARY KEY (`ItemID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=116973 DEFAULT CHARSET=utf8

现在,我尝试将“mws_data”中的“Id”字段设置为引用“items_link”中的“upc”的外键:

    alter table mws_data add foreign key (Id) references items_link.upc;

但是,此错误显示:

    Error Code: 1215. Cannot add foreign key constraint

我尝试在“mws_data.id”中查找不在“items_link.id”中的值,但收到 0 个结果:

    select Id
    from mws_data
    where id not in (select upc from items_link);

如有任何建议,我们将不胜感激!

最佳答案

问题在于:

alter table mws_data add foreign key (Id) references items_link.upc;

试试这个:

alter table mws_data add constraint fk_id foreign key (Id) references items_link(upc);

关于MySQL-添加索引、链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42654125/

相关文章:

mysql - 查询差异

mysql - 当我想做 if 条件 sql 时出现语法错误

MYSQL 函数 IF 语法

php - 将数组保存到mysql数据库中

php - 避免空数组的未定义偏移错误

mysql - 如何在 MySQL 中创建带有数字名称的数据库?

mysql - 使用 MySql 在当前表中插入时触发更新另一个表?

c# - 如何在Visual C# 2010中使用MySQL数据库

php - 使用两个不同的数组构建一个 MySQL INSERT,每个数组使用

php - 如何在 PHP 中使用时间跨度?