2011-12-25 2 views
1

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

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

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

51547XXXX 
52160XXXX 
52222XXXX 
52297XXXX 
52448XXXX 

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

5154716XX 
5154716XX 
or 
5216069673X 
521606903XX 

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

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

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

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

+0

каковы X предположим, что для представления –

+5

, как эта таблица определена (тип данных для этого столбца) – Mat

+0

@Dagon:.? X представляет собой любое целое – whizzzkid

ответ

4

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

+0

Это кажется чтобы сделать трюк. Кстати, кстати, какова точность, до которой MySQL считает ее уникальной? Как для обычных int, так и для bigint? – whizzzkid

+0

обычные ints подписаны 32 бита, которые вы получаете до обычного 2^31-1. являются знаками 64 бит так что вы можете получить до 2^63-1 –

Смежные вопросы