MySQL не может различить большие уникальные значения - PullRequest
1 голос
/ 25 декабря 2011

Я создаю приложение для Facebook, и приложение обращается к друзьям пользователя через открытый график, и мне нужно, чтобы они содержались в базе данных.

Теперь здесь эта база данных содержит пользователя id, name и некоторую другую информацию, необходимую для моего приложения. Чтобы предотвратить несколько записей в базе данных, я назначил идентификатор пользователя как unique, используя phpMyAdmin. теперь это прекрасно работает для многих значений, но в то же время не работает.

Допустим, значения, которые являются уникальными в соответствии с mysql:

51547XXXX
52160XXXX
52222XXXX
52297XXXX
52448XXXX

Но если идентификаторы становятся

5154716XX
5154716XX
or
5216069673X
521606903XX

Тогда он считает его похожим и, таким образом, отбрасывает один из них.

Результат, скажем, я ввожу свой список друзей в таблицу, тогда в нем должно быть 830 записей, и если я не использую уникальное ограничение, то это значение, которое я получаю.

Но как только unique активируется, я просто получаю 375 , что означает, что 455 записей отбрасываются, считая их такими же, как предыдущие данные ..

Решение, о котором я могу подумать, это сначала сравнить данные с php, а затем записать их в базу данных, но затем с таким большим количеством запросов это займет много времени. Google не может ответить на это, не знаю почему ..: (

1 Ответ

4 голосов
/ 25 декабря 2011

Идентификаторы пользователей Facebook слишком велики , чтобы соответствовать типу INT MySQL (который является 32-разрядным). Вам нужно использовать тип BIGINT, который является 64-битным и, таким образом, может обрабатывать диапазон идентификаторов, которые использует Facebook.

...