2016-05-26 4 views
3

Я пытаюсь установить столбец в моей базе данных из VARCHAR в INT (значения уже в БД)Преобразование столбца VARCHAR в INT в MySQL/Sequel Pro

При выполнении этого действия происходит следующее (пример) :

| number (varchar) | number (int | 
| 20090911913  > 2147483647 | 
| 3009092113  > 2147483647 | 

Каждый номер уникален (со значением VARCHAR), при установке столбец INT все значения становятся одинаковыми (2147483647). Обратите внимание, что все значения, находящиеся в VARCHAR, не содержат букв (я проверил его)

Теперь я не знаю, почему это происходит, данные поступают из CSV, и я проверил при импорте в Sequel Pro, если записи имеют другое число (не являющийся 2147483647). В графическом интерфейсе он показывает, что он отличается, но когда все импортируется, он автоматически станет 2147483647.

Что происходит, и как я могу это предотвратить?

ответ

3

При преобразовании номера, которые находятся за пределами диапазона, подписанного целого типа Int, который составляет от -2147483648 .. 2147483647 (т.е. от -2 до 2 -1), MySql ограничивает величину до максимальное значение, которое может быть сохранено в Int, то есть 2147483647.

Оба значения, которые вы показываете, находятся за пределами диапазона, представляемого Int. Вместо этого вы должны использовать BigInt.

+0

Глупо, что я пропустил это, спасибо! – Orion

1

Попробуйте изменить тип столбца на BIGINT, это должно решить вашу проблему.

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

Здесь вы можете найти документ, объясняя все о Numerical types.

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