Проблема с хранением больших чисел в БД mysql - PullRequest
2 голосов
/ 12 июля 2011

Я использую MySQL DB для сохранения идентификаторов. Работало нормально.

Но теперь идентификатор, подобный этому, 10000000754987. Хранится как 1.0000000754987E + 14. Как я могу это исправить.

В качестве значения поля varchar установлено 255 символов.

Я ценю любую помощь.

Спасибо.

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Вы, очевидно, используете PHP для генерации этого идентификатора.

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

Прежде всего,Вы можете хранить это число как bigint, а не varchar.Это целое число, которое вы сохраняете, я не вижу причин, по которым вы бы использовали varchar и по сути тратите больше места, чем нужно.bigint использует 8 байтов для хранения числа.Это означает, что каждое число с более чем 8 цифрами, хранящимися в поле varchar, будет занимать больше места, чем поле bigint, которое может хранить числа до 2 ^ 64.

Во-вторых, убедитесь, что вы не используете какие-либоформатирование чисел перед отправкой результата вашей расчетной операции в БД.Я скопировал / вставил целое число, которое вы опубликовали (10000000754987), и php автоматически не преобразует его в научную нотацию, поэтому я предполагаю, что у вас есть что-то еще, что происходит в фоновом режиме с генерацией этого числа - отключите его, если это возможно, и сохранитеномер в соответствующем поле типа (bigint).Также было бы полезно, если бы вы опубликовали дополнительную информацию о вашем приложении и о том, что оно делает, потому что ошибка не всегда там, где люди ее воспринимают.

0 голосов
/ 12 июля 2011

Ваша проблема в том, что числовые идентификаторы слишком велики для обработки PHP / MySQL.

Измените тип данных на VARCHAR(36), и CakePHP теперь начнет использовать UUIDs вместочисловые идентификаторы, вам придется делать это на любых внешних ключах для этой таблицы.Это предотвратит возникновение этой проблемы в будущем.

Кроме того, поскольку это varchar, оно должно работать и с вашими текущими идентификаторами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...