外键约束不正确,我不知道该怎么办

Foreign key constraint is incorrectly formed, i dont know what to do

我在 phpMyAdmin 中有这两个 table:

分析:

CREATE TABLE `assenze` (
    `idAssenza` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `ename` varchar(255) NOT NULL,
    `starts` datetime NOT NULL,
    `ends` datetime NOT NULL
   ) 

尤腾特:

CREATE TABLE `utente` (
  `utenteID` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `cognome` varchar(255) NOT NULL,
  `nome` varchar(255) NOT NULL,
  `nomeUtente` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL
)

我必须通过外键连接它们,外键包括将“nomeUtente”放入“assenze”table。

我试过:

ALTER TABLE assenze
ADD COLUMN nomeUtente varchar(50),
ADD FOREIGN KEY (nomeUtente) REFERENCES utente(nomeUtente)

但它给了我这个错误 ->

Foreign key constraint is incorrectly formed

我也试过单独添加列并给它 FK 属性但不起作用 在互联网上,我找到了其他解决方案,但对我没有用。我不知道该尝试什么了。

P.S。我无法删除 table 并重做,因为它们连接到某个 php 文件,如果我删除并重新创建

会出现错误

我只想补充:感谢所有帮助过我的人

问题是您在使用 ALTER 查询时试图添加另一个同名的列 nomeUtente

这个:

ALTER TABLE assenze
ADD COLUMN nomeUtente varchar(50),
ADD FOREIGN KEY (nomeUtente) REFERENCES utente(nomeUtente)

应该是:

ALTER TABLE assenze
ADD FOREIGN KEY (nomeUtente) REFERENCES utente(nomeUtente)

每个外键都需要在引用的一个或多个列上建立索引

所以在 Utente 的名字中添加一个 KEX

CREATE TABLE `assenze` (
    `idAssenza` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `ename` varchar(255) NOT NULL,
    `starts` datetime NOT NULL,
    `ends` datetime NOT NULL
   ) 
CREATE TABLE `utente` (
  `utenteID` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `cognome` varchar(255) NOT NULL,
  `nome` varchar(255) NOT NULL,
  `nomeUtente` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL
  
)
ALTER TABLE utente ADD
  KEY(`nomeUtente`)
ALTER TABLE assenze
ADD COLUMN nomeUtente varchar(50),
ADD FOREIGN KEY (nomeUtente) REFERENCES utente(nomeUtente)

db<>fiddle here