British Airways has been forced to apologize after a flight from London to Dusseldorf landed more than 600 miles (965 km) away in Edinburgh by mistake.