C'est probablement parce que vous avez nommé au moins une contrainte avec le même identifiant qu'une colonne :
/* You already have a column named `restaurant` in this table,
but are naming the FK CONSTRAINT `restaurant` also... */
CONSTRAINT `restaurant`
FOREIGN KEY (`restaurant` )
REFERENCES `mydb`.`restaurants` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
Devrait utiliser un identifiant différent pour la contrainte comme fk_restaurant
comme dans :
CONSTRAINT `fk_restaurant`
FOREIGN KEY (`restaurant` )
REFERENCES `mydb`.`restaurants` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
Et même chose dans la food
tableau :
/* Name it fk_food */
CONSTRAINT `fk_food`
FOREIGN KEY (`food` )
REFERENCES `mydb`.`food` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
/* Name it fk_restaurant */
CONSTRAINT `fk_restaurant`
FOREIGN KEY (`restaurant` )
REFERENCES `mydb`.`restaurants` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
Ce sont les trois seuls que je vois, mais il pourrait y en avoir d'autres que j'ai ratés.