即使两个字段具有相同的数据类型也无法创建外键

问题描述 投票:0回答:0

我阅读了thisthis问题,但我无法解决。
MariaDB v1.6.12、PhpMyAdmin v5.1.1、Ubuntu 22.04.

这是我的

orders
桌子:

orders  CREATE TABLE `orders` (
  `id` varchar(16) NOT NULL COMMENT 'Id',
  `machine` varchar(8) NOT NULL COMMENT 'Macchina',
  `reference` varchar(255) NOT NULL COMMENT 'Riferimento',
  `article` varchar(255) NOT NULL COMMENT 'Articolo',
  `length` int(11) NOT NULL DEFAULT 0 COMMENT 'Q.tà',
  `date` date NOT NULL DEFAULT current_timestamp() COMMENT 'Data',
  `states_id` int(11) NOT NULL COMMENT 'Stato',
  PRIMARY KEY (`id`,`machine`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci  

这是我的

states
桌子:

states  CREATE TABLE `states` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` varchar(32) NOT NULL,
  `label` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci 

我想在

orders.states_id
states.id
之间创建一个外键。 这里建议的 SQL 和 UI 图片:

ALTER TABLE `orders` ADD CONSTRAINT `state_fk` FOREIGN KEY (`states_id`) REFERENCES `states`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; 

但它返回错误:

但是

states.id
orders.states_id
都是
int(11)
而不是NULL。
states.id
是主键。

它们之间阻止创建外键的区别是什么?

mysql database phpmyadmin mariadb foreign-keys
© www.soinside.com 2019 - 2024. All rights reserved.