The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"mysql primary key."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"mysql primary key." 
Сообщение от alexey emailИскать по авторуВ закладки(??) on 19-Апр-05, 01:15  (MSK)
прив.

Собственно что случиться когда primary ket int8) в mysql "закончится" (станет максимально возможным) ? :))))

пок.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • mysql primary key., sashacrane, 03:26 , 19-Апр-05, (1)  
  • mysql primary key., XAnder, 08:57 , 19-Апр-05, (2)  

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "mysql primary key." 
Сообщение от sashacrane Искать по авторуВ закладки(??) on 19-Апр-05, 03:26  (MSK)
Кажется перестанет работать.
Покрайней мере в MS SQL 2000 я проверял. Там можно поставить начальное значение счетчика по ближе к концу и добавить одну-две записи. В ответ пишет переполнение или че-то в этом роде.
Попробуй в int записать bigint наверное этот же код ошибки и вылезет в такой ситуации.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "mysql primary key." 
Сообщение от XAnder Искать по авторуВ закладки(??) on 19-Апр-05, 08:57  (MSK)
>Собственно что случиться когда primary ket int8) в mysql "закончится" (станет максимально
>возможным) ? :))))

В Мускуле результат инкремента столбца, содержащего максимальное значение, - это то же самое значение. А значит произойдёт конфликт в индексе. Таким образом, наблюдается следующая картина:

mysql> create table AutoTest (id int unsigned not null auto_increment, primary key (id));
Query OK, 0 rows affected (0.51 sec)

mysql> insert into AutoTest values (4294967294);
Query OK, 1 row affected (0.25 sec)

mysql> select * from AutoTest;
+------------+
| id         |
+------------+
| 4294967294 |
+------------+
1 row in set (0.05 sec)

mysql> insert into AutoTest values ();
Query OK, 1 row affected (0.00 sec)

mysql> select * from AutoTest;
+------------+
| id         |
+------------+
| 4294967294 |
| 4294967295 |
+------------+
1 row in set (0.00 sec)

mysql> insert into AutoTest values ();
ERROR 1062: Duplicate entry '4294967295' for key 1

mysql> select * from AutoTest;
+------------+
| id         |
+------------+
| 4294967294 |
| 4294967295 |
+------------+
2 rows in set (0.02 sec)

Что и требовалось доказать.

В общем, достаточно неприятно, и если это критично (а это реально может быть критично), используйте bigint - вряд ли доберётесь до конца :) или какой-нибудь другой механизм назначения уникальных номеров.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру