MariaDB:ALTER TABLE语法添加FOREIGN KEY?

use*_*051 9 mariadb

以下陈述有什么问题?

ALTER TABLE submittedForecast
  ADD CONSTRAINT FOREIGN KEY (data) REFERENCES blobs (id);
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是

Can't create table `fcdemo`.`#sql-664_b` (errno: 150 "Foreign key constraint is incorrectly formed")
Run Code Online (Sandbox Code Playgroud)

Jul*_*sch 7

这适用于MariaDB 10.1.8:

CREATE TABLE `submittedforecast` (
    `id` INT(11) NOT NULL,
    `data` INT(11) NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `data` (`data`)
) ENGINE=InnoDB;    
CREATE TABLE `blobs` (
    `id` INT(11) NOT NULL,
    `content` BLOB NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB;
ALTER TABLE submittedForecast
  ADD CONSTRAINT FOREIGN KEY (data) REFERENCES blobs (id);
Run Code Online (Sandbox Code Playgroud)

你可以给你MariaDB的版本号和一个完整的例子包括CREATE TABLE用于报表submittedForecastblobs


小智 5

不知道您是否已经解决了这个问题,但请确保表之间的引擎和排序规则匹配(例如:latin1 到 latin1 以及 InnoDB 到 InnoDB)。

我遇到了同样的问题,通过切换这些我设法让它工作。