sql >> Databasteknik >  >> RDS >> Mysql

fel ändrar tabell, lägger till en främmande nyckel för begränsning får fel Kan inte lägga till eller uppdatera en underordnad rad

Du har minst ett datavärde i answers.questions_id som inte förekommer i questions.id .

Här är ett exempel på vad jag menar:

mysql> create table a ( id int primary key);

mysql> create table b ( aid int );

mysql> insert into a values (123);

mysql> insert into b values (123), (456);

mysql> alter table b add foreign key (aid) references a(id);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint 
fails (`test`.`#sql-3dab_e5c`, CONSTRAINT `#sql-3dab_e5c_ibfk_1` FOREIGN KEY
(`aid`) REFERENCES `a` (`id`))

Du kan använda detta för att bekräfta att det finns omatchade värden:

SELECT COUNT(*)
FROM answers AS a
LEFT OUTER JOIN questions AS q ON a.questions_id = q.id
WHERE q.id IS NULL



  1. Git-tips och bästa praxis för nybörjare

  2. Optimera överlappande frågor Del 1:Introduktion och förbättrad T-SQL-lösning

  3. Hur uppdaterar man mysql med python där fält och poster kommer från en ordbok?

  4. Skillnad mellan nyckel, primärnyckel, unik nyckel och index i MySQL