|
Тема
|
Странен проблем с MySQL!
|
|
Автор |
hadministratora () |
Публикувано | 05.05.04 00:15 |
|
От скоро един от PHP скриптовете ми спря да работи без видима причина. След кратко разследване установих, че причината може да е в странното поведение на една от таблиците. Странността му се заключава в това, че ако изтрия последния ред (т.е. този с най голямо ID) и той има примерно ID 18, то при следващия INSERT ID-то отново е 18, а не както може да се очаква 19. Възможно и да съм си дефинирал грешно индексите.
Колоната ID е първа в таблицата, от тип INT(255) e, дефинирана е като PRIMARY и има auto increment. Опитах и да създам UNIQUE индекс върху нея, но не помогна. Таблицата е BDB. MySQL-а ми е 4.0.не-помня-колко.
Благодаря предварително
| |
Тема
|
Re: И какво му е странното? Читать надо ...
[re: hadministratora]
|
|
Автор |
salle (един такъв) |
Публикувано | 05.05.04 09:57 |
|
14.2.5 CREATE TABLE Syntax
...
An integer column can have the additional attribute AUTO_INCREMENT.
...
If you delete the row containing the maximum value for an AUTO_INCREMENT column, the value will be reused for an ISAM or BDB table, but not for a MyISAM or InnoDB table.
| |
Тема
|
Re: И какво му е странното? Читать надо ...
[re: salle]
|
|
Автор |
hadministratora (хабсурден) |
Публикувано | 05.05.04 14:02 |
|
Очевидно ми е убягнало, че има разлика при различните видове таблици...
А нима няма начин да се постигне ефект като при MyISAM таблица?
Все пак става въпрос за таблица с потребители и е доста кофти някой потребител да получи ID което е било на друг преди него? Разбира се в краен случай мога и да не ги изтривам от таблицата, а само да ги маркирам като изтрити, но тоя вариант не ми допада особено...
Ако някой се сети да каже.
Сърдечно благодаря на salle!
So long and thanks for all the fish!
| |
|
Всеки тип таблици си ги има
Ако държиш на транзакциите моят съвет е
ALTER TABLE tbl TYPE=InnoDB
InnoDB е много по-добра машина от BDB далеч не само заради auto_increment
| |
|
Знам, но уви моя хост не поддържа този тип таблици и не съм в положение да предявявам претенции...
So long and thanks for all the fish!
| |
|
Това е доста рядък случай.
По мои наблюдения на 1 потребител на BDB се падат около 10 000 потребители на InnoDB.
Ами в такъв случай ще трябва да се съобразяваш. Като например да прибегнеш до номера с отделна таблица само за auto_increment стойностите ... и да си усложниш почти всички заявки ама ... това е положението.
<P ID="edit"><FONT class="small"><EM>Редактирано от salle на 05.05.04 22:27.</em></font></p>Редактирано от salle на 05.05.04 22:28.
| |
|
|
|
|