When importing phone numbers onto constituent records, a number that matches one that exists already on the constituent record is identified as a match, and the information included in the import file overwrites whatever information already exists on that phone number record, including the primary flag being marked or unmarked. However, if a phone number is marked as primary on the constituent record, but not in an import of the same number, the primary flag will be unmarked, resulting in the batch exception: Constituent must have a primary phone.
This becomes problematic when importing large groups of phone numbers, because there is no way to tell whether or not there was previously a primary phone number marked without going back to each constituent record individually. If there are multiple phone numbers imported for each constituent in the process, there is no way to determine which record was marked as primary and is being overwritten without going back to the constituent record.
Download and install the latest patch, which contains all fixes from previous patches. If you are running an older version, download and install the latest version and then the patch.