что будет после последнего значения auto_increment id?

my_php

Новичок
что будет после последнего значения auto_increment id?

что будет после последнего значения auto_increment id?

Никак не пойму что делать. Вот например у меня
id tinyint auto_increment
после того как значение стало равным 255, при запросе insert выдается ошибка о том, что дублируется значение ключа id 255. Что делать ?

P.S. от типа данных естесственно вопрос не зависит
 

GoaMind

Новичок
255? А я думал TINYINT ои -128 до 127...
дело в том что все уникальные значения исчерпаны (не считая отрицателных)
когда хочешь записать ещё допустим 128, но в поле можно максимально записать 127. Что и пытаеться сделать MySQL и отсюда и ошибка о повторении
 

my_php

Новичок
такс... 2Frol
во-первых, я говорю об unsigned tinyint, использовал его для примера, чтобы большие числа не затрагивать....

2GoaMind
во-вторых, ошибка вовсе не в этом в таблице всего три поля заняты с id 253, 254, 255...то есть места в таблице еще навалом , но получается что туда ничего нельзя добавить..вот и парадокс

2Фанат
нет никаких, поидее мускл должен как-то крутить покругу эти id а он не хочет
 

my_php

Новичок
до этой идеи я додмуался не сам, если верить преподу по БД в каких-то сис-мах это есть, хотя я мог не правильно понять.
да и другой путь вижу смутно...не создавать же новую таблицу..? что за ерунда?

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

Фанат

oncle terrible
Команда форума
таблицу, что можно похоронить и забыть?
если тебе нужен в ней id, то - да, ЕСТЕСТВЕННО. Это ЕСТЕСТВЕННЫМ образом следует из того, что такое id.

но ты лучше сначала скажи - с какого перепугу он кончится?
 

chisto_tolyan

Враг народа
что будет после последнего значения auto_increment id?
а так же существует ли загробный мир и что будет после апокалипсиса?

хинт: не юзай tinyint, юзай простой int, тогда он нескоро кончится)))
 

Mikle Heavy

Новичок
во-вторых, ошибка вовсе не в этом в таблице всего три поля заняты с id 253, 254, 255...то есть места в таблице еще навалом , но получается что туда ничего нельзя добавить..вот и парадокс
Да никакой это не парадокс. Поле id АВТОИНКРЕМЕНТНО. Это означает, что он с каждой добавленой строкой равномерно возрастает (в нашем случае увеличиваеся на единицу). Кончился диапазон - все, приехали. Ошибка.
Вывод - надо брать большой диапазон. И делать его беззнаковым. Мы ведь не берем в расчет отрицательное значение первчного ключа.
 

nina

Новичок
На самом деле есть какой-нить способ у существующей таблицы сбросить инкремент, при чем чтобы существующие значения либо остались как есть или на крайний случай переупорядочились?
 

Фанат

oncle terrible
Команда форума
что значит - сбросить? куда сбросить? на ноль? и как оно дальше будет работать?
допустим, в таблице есть id 3,4 и 5.
сбросили на один. вставили две строки. и что будет делать база при вставке слебующей?
или на крайний случай переупорядочились?
слушай, тебе вообще id нужен-то? может, его вообще - фюить из базы?
 

Mikle Heavy

Новичок
id - это, как правило, первичный ключ таблицы. Он определяет уникальность строки. В этом его смысл и основная задача. Поэтому ни сбрасывать, ни тем более изменять его настоятельно не рекомендуется.
 

Kivsiak

Новичок
Уже который раз возникает эта тема на форуме. Может в FAQ чтонибудь написать?
открываем ман по mysql смотрим типы данных
Код:
INT[(M)] [UNSIGNED] [ZEROFILL] 
A normal-size integer. The signed range is -2147483648 to 
2147483647. The unsigned range is 0 to 4 294 967 295.
4 миллиарда записей. Мало? Если мало есть BIGINT, правда с ним могут быть проблемы.
ID используется чаше всего для организации внешних ключей. И сведение к сплошной нумерации с сохранением всех связей будет довольно ресурсозатратным. И во многих случаях бессмысленным.
 

Фанат

oncle terrible
Команда форума
GoaMind
это ты хочешь делать без пропусков
вот и объясни сначала - зачем

-~{}~ 04.02.06 10:45:

Kivsiak
Ну, допустим, там написано. Но ТЫ-ТО его не читал.
Ну и какой смысл писать в фак?
 
Сверху