Как обрабатывать новые размеры UID для Facebook?

Я немного работал над приложением Facebook, но когда я зарегистрировал нового пользователя для проверки взаимодействия с другом, у нового пользователя появился uid ( 100000XXXXXXXXX ), который кажется большим для обработки php.

Сохранение числа в базе данных приводит к тому же значению ( 2147483647 ). Я предполагаю, что это также ошибка PHP, так как я полагаю, что uid поместится в unsigned bigint?

Я не совсем уверен, куда идти отсюда, какие-то предложения?

Solutions Collecting From Web of "Как обрабатывать новые размеры UID для Facebook?"

Исправление состоит в том, чтобы всегда хранить UID как строку. Используйте VARCHAR поля VARCHAR в MySQL, и все будет в порядке.

В общем, многие гуру базы данных расскажут вам, что интерпретация внешних ключей другого приложения (например, UID в этом случае) плохо плоха, и вы должны обрабатывать их как непрозрачный текст.

Facebook рекомендует хранить его как BIGINT без знака.

Сведения о пользователе и соединения можно найти здесь .

Для PHP вы сохранили бы его как строку (потому что, в конечном счете, если вы собираетесь использовать его, он будет отображаться на странице или в данных JSON или что-то еще, что является жестким. Нет необходимости выполнять арифметику на это число).

Я использую BIGINT UNSIGNED для нескольких приложений, и все работает отлично.

В каком типе поля MySQL вы храните данные UID? Беззнаковый bigint может хранить до 18446744073709551615. (См. http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html)

Просто обновите свою схему через что-то вроде …

 ALTER TABLE <table name> MODIFY COLUMN <column name> BIGINT UNSIGNED NOT NULL; 

… и я подозреваю, что все будет хорошо.

NB: Вы захотите попробовать это в резервной копии, чтобы убедиться, что я не совсем прав. 🙂