Решение ошибки 1264 MySQL: значение вне диапазона для столбца

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Ошибка MySQL 1264 обозначает, что значение, которое вы хотите добавить, превосходит предусмотренные границы типа данных столбца. Возьмем для примера тип данных INT: принимаемые им значения находятся в диапазоне от - 2147483648 до 2147483647. Попытка вставить число, превышающее этот диапазон, приведет к ошибке.

Пример: Как засунуть 9999999999 в INT? Примерно так же как устроить пицца-вечеринку в одиночестве — это невыполнимо!

Решение: Измените тип данных столбца на BIGINT, способный вместить значительно больший объем данных. Это именно то, что вам и нужно: как переход в просторный дом после узкого коридора.

SQL
Скопировать код
/* Меняем тип данных с INT на BIGINT */
ALTER TABLE your_table MODIFY your_column BIGINT;

Таким образом, столбец будет способен принимать значительно большие значения, при этом не потребуется изменение структуры таблицы.

Кинга Идем в IT: пошаговый план для смены профессии

Предаём данные в хорошие руки: выбираем VARCHAR

Почему номера — это не числа

Номера телефонов и факсов несмотря на числовой формат, фактически являются строками, потому важны ведущие нули и форматирование. Использование числовых типов данных, например, INT, может привести к потере этих важных элементов.

Решение: Используйте тип VARCHAR.

Пример:

SQL
Скопировать код
/* Мы заменяем INT на VARCHAR */
ALTER TABLE customers MODIFY cust_fax VARCHAR(20);

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

Больше — это не всегда лучше: использование UNSIGNED INT

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

Пример:

SQL
Скопировать код
/* Теперь столбец отображает только наличие товара на складе */
ALTER TABLE products MODIFY stock_amount UNSIGNED INT;

Изучаем мир типов данных как капитан

Согласованность: важнейший компонент

Убедитесь, что тип данных ваших столбцов соответствует их содержимому — это как стержень, поддерживающий структуру корабля. Если вы попытаетесь вставить текст в числовой столбец, это предрекает неприятности.

Приветствуем BIGINT

Иногда значения растут до такого масштаба, которые уже не может вместить UNSIGNED INT. В таких случаях им нужен новый дом — тип данных BIGINT, способный хранить до 9223372036854775807 значений, легко справляющийся с любыми объемами.

Пример:

SQL
Скопировать код
/* Добро пожаловать в элитный клуб BIGINT */
ALTER TABLE transactions MODIFY id BIGINT AUTO_INCREMENT;

Делаем первые шаги по пониманию AUTO_INCREMENT

AUTO_INCREMENT автоматически присваивает уникальные номера записям, но никак не увеличивает диапазон значений.

Визуализация

Представим игрушечный поезд (🚂), который пытается проехать через низкий туннель (🚇):

Markdown
Скопировать код
Поезд (🚂): [ Значение: 50000 ]
Туннель (🚇): [ Макс. вместимость: 32767 ]

В результате происходит столкновение:

Markdown
Скопировать код
🚂💥🚇 -> 🚨 Ошибка 1264: Слишком большое значение!

Визуально это выглядит так:

Markdown
Скопировать код
Больше значение (🚂): [📈]
Ограничение столбца (🚇): [📉]

Результат: [🚂] не вписывается в [🚇] (💥).

Ошибка MySQL 1264 возникает, когда данные сталкиваются с границами, предусмотренными типом данных столбца.

Эффективные стратегии обхода проблем

Определение длины для VARCHAR

Для VARCHAR установите длину, достаточную для хранения самого длинного значения. VARCHAR(20) идеально подходит для хранения номеров.

Изучите диапазоны числовых типов

В официальной документации MySQL вы найдете четкий обзор диапазонов числовых типов. Используйте эту информацию при проектировании схемы данных для предотвращения ошибки 1264.

Проявляйте бдительность при вставке данных

При вставке данных всегда убеждайтесь в соответствии типов данных. Так можно предотвратить ошибку 1264.

Полезные материалы

  1. MySQL :: Руководство по MySQL 8.0 :: 11.1.6 Атрибуты числовых типов— основной ресурс для изучения числовых типов и атрибутов в MySQL.
  2. "Newest 'mysql-error-1264' Questions – Stack Overflow" — удобный форум для обсуждения ошибки 1264 с разработчиками со всего мира.
  3. MySQL :: Руководство по MySQL 8.0 :: 11.7 Требования к хранению типов данных — подробное описание требований к хранению данных для различных типов.
  4. MySQL :: Руководство по MySQL 8.0 :: 11.1.2 Целочисленные типы данных (точное значение) — советы по использованию целочисленных типов данных.
  5. Типы данных SQL для MySQL, SQL Server и MS Access — руководство по типам данных SQL для разных баз данных.
  6. PHP: mysqli::$error – Manual — методы обработки ошибок MySQL в PHP.
  7. MySQL :: MySQL Workbench — инструментарий для диагностики и устранения ошибок баз данных.