У меня есть две таблицы базы данных, InnoDB, обе имеют столбец id_fornitore
, нет способа создать внешний ключ, и я не понимаю, почему.Это простой внешний ключ, и я успешно создал другой на том же столе.Вот мой запрос:
ALTER TABLE tbl_prima_nota
ADD CONSTRAINT fk_id_fornitore
FOREIGN KEY (id_fornitore) REFERENCES tbl_fornitori(id_fornitore)
ON DELETE SET NULL
ON UPDATE CASCADE
Вот вывод монитора состояния базы данных:
Foreign key constraint fails for table `fatturazione2`.`#sql-68_409`:
,
CONSTRAINT `fk_id_fornitore` FOREIGN KEY (`id_fornitore`) REFERENCES `tbl_fornitori` (`id_fornitore`) ON DELETE SET NULL ON UPDATE CASCADE
Trying to add in child table, in index fk_id_fornitore tuple:
DATA TUPLE: 2 fields;
0: len 4; hex 80000000; asc ;;
1: len 4; hex 80000001; asc ;;
But in parent table `fatturazione2`.`tbl_fornitori`, in index uk_id_fornitore,
the closest match we can find is record:
PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 80000001; asc ;;
1: len 4; hex 80000001; asc ;;
Кто-нибудь может понять, что здесь происходит?Большое спасибо.
ОБНОВЛЕНИЕ Спасибо Биллу Карвину за запрос и Рику Джеймсу , чтобы указать мне правильное направление.Проблема заключалась в следующем: когда я впервые добавил столбец id_fornitore
в таблицу tbl_prima_nota
, я допустил NULL
в качестве возможного значения, но я не выбрал его как Default
;при создании столбца, поскольку таблица уже была заполнена, MySQL добавил 0
в качестве значения по умолчанию в каждой строке, но 0
отличается от NULL
.В качестве быстрого решения, так как столбец id_fornitore
был пуст, я удалил его из tbl_prima_nota
и заново создал значение NULL
в качестве значения по умолчанию, после чего я смог создать внешний ключ без проблем.