Intereting Posts
Codeigniter не может загружать библиотеки Laravel 5 Force Загрузить pdf-файл Как создать безопасную строку активации в php? PHP-сессии работают очень хорошо, но что-то меня раздражает … Является ли мой кеш скриптов PHP (общедоступным) дружественным? Почему этот простой php-скрипт утечки памяти? Проблема при выполнении запроса Facebook Как установить код ошибки Apache HTTP 503 вместо HTTP 500 при ошибке PHP Панель загрузки при запуске скриптов Закрытие PHP как необязательный аргумент функции Создание базового тестового класса для PHPUnit и расширение его для общей функциональности приводит к ошибке, не найденной классом 500 Внутренняя ошибка сервера для файла php не для html Строгие стандарты: только переменные должны назначаться по ссылке PHP 5.4 Невозможно избавиться от PHP-уведомлений в mPDF как преобразовать многомерный ассоциативный массив в одномерный массив в php?

mySQL auto increment problem: Дублирующая запись '4294967295' для ключа 1

У меня есть таблица писем.

Последняя запись для идентификатора автоматического увеличения равна 3780, что является законной записью. Любая новая запись, которую я сейчас вставляю, вставлена ​​прямо там.

Однако в моих журналах у меня есть случайные:

Query FAIL: INSERT INTO mail.messages (timestamp_queue) VALUES (:time); Array ( [0] => 23000 [1] => 1062 [2] => Duplicate entry '4294967295' for key 1 ) 

Так или иначе, автоинкремент подскочил до INT max 4294967295

Почему на зеленой земле бога это подскочит так высоко? У меня нет вложений с полем id.

    Статус show для этой таблицы, таблица Auto_increment теперь читает: 4294967296

    Как могло произойти что-то подобное? Я понимаю, что поле id должно быть большим int, но беспокойство, которое у меня есть, это то, что как-то эта вещь подпрыгивает.

    мистифицировать

    Изменить: обновить

    mysql версия 5.0.45 красная шляпа исправлена

    Поскольку я установил id в BIGINT, последние несколько идентификаторов выглядят так:

     3777 3778 3779 3780 4294967295 4294967296 4294967297 4294967298 4294967299 4294967300 

    Как вы можете видеть, они инкрементальны, без пробелов (пока). Совершенно странно.

    Related of "mySQL auto increment problem: Дублирующая запись '4294967295' для ключа 1"

    У меня была такая же проблема с тем же номером. Моя проблема заключалась в том, что у меня было поле в int(10) когда я сменил его на bigint(20) он решил мою проблему.

    Если у других возникает эта проблема. Сначала проверьте свой размер поля. 🙂

    Мне все еще не совсем ясно, что здесь произошло, но я думал, что буду следить.

    В моем движке persistence у меня был один тип объекта с идентификатором auto-increment и подкласс с идентификатором GUID.

    Очевидно, что эти два несовместимы. У меня есть причина, чтобы преобразовать объект в его родительский элемент, а затем сохранить его (в основном подкласс представляет собой текстовый TEMPLATE, который имеет дополнительные функции, но когда я хочу на самом деле ОТПРАВИТЬ электронную почту, я конвертирую его в родительский объект и сохраняю его регулярная очередь исходящей почты). Глупо, я не понимал, что форматы id различны. Это привело к попытке вставить запись с длиной длиной 36 символов в int. Строка разрешена в «0» в подготовленном операторе и по какой-либо причине это приводит к тому, что система автоматического инкремента имеет значение WIG OUT и максимальное значение поля INT auto increment id в исходной таблице.

    Короче говоря, хорошо, что я держал журналы.

    мистифицировать

    по phpmyadmin просто вы можете изменить последний идентификатор с вкладкой операций этой таблицы

    Это на самом деле просто со мной тоже (все еще не знаю почему). Познай, что я сделал:

     ALTER TABLE `{table name here}` AUTO_INCREMENT = {your number here}; FLUSH TABLE `{table name here}`; 

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

    Просто измените его на BIGINT, и вы можете создать «некоторые» дополнительные новые записи. Пару сто миллиардов …;)

    Это случилось со мной. Проблема глупа.

    Если он получает character string он преобразует ее в 0 и если integer, as in my case, where i was trying to insert a mobile no (in india it's 10 digits and starts with 9 like 9123456789 ) into a столбец типа int.

    Однако предел для signed int равен 2147483647 .

    Я попытался преобразовать его в unsigned , но все же ограничение – 4294967295 . При этом ошибка «4294967295» что-то, но когда я преобразовал ее в bigint , у которой есть предел 9223372036854775807 (что больше для 10-значного мобильного нет), он начал его принимать.

    Ради мобильных я не конвертировал его в unsigned который увеличил свой предел до 18446744073709551615 .