|
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования. |
|
Опции темы |
Сегодня | |||||
|
18.05.2019, 16:34 | #1 | |||
Реноме:
1552
|
auto_increment в MySQl
Создаю базу с полем
Код HTML:
id MEDIUMINT UNSIGNED NOT NULL auto_increment, первые 4 записи имеют ID: 1 2 3 4 Следующие 5 записей имеют ID: 13 14 15 16 17 Странно, почему не подряд?
__________________
Последний раз редактировалось Port_Artur; 18.05.2019 в 16:36. |
|||
19.05.2019, 19:09 | #2 | |||
Реноме:
393
|
Видимо, все же после записи первого блока было удаление нескольких последующих. Или первый блок писался с указанием конкретных id.
__________________
|
|||
19.05.2019, 19:15 | #3 | |||
Реноме:
1552
|
В том то и дело, что записи из этой таблицы не удаются в скрипте вообще, только пишутся.
И это делает одна и та же строка. добавлено через 4 минуты Код HTML:
mysql_query("INSERT IGNORE INTO ds (idds,nameurl,nameurlnew) VALUES ('$id','$nameurl','$nameurlnew') ");
__________________
Последний раз редактировалось Port_Artur; 19.05.2019 в 19:19. Причина: Добавлено сообщение |
|||
19.05.2019, 19:26 | #4 | |||
Реноме:
393
|
idds – это случаем не id со скриншота?
Возможно, IGNORE скрывает какие-то «сбои» при записи, но автоинкрементальный счетчик при этом увеличивается, т.е. на месте разрывов должны были быть какие-то записи, но не случилось.
__________________
|
|||
19.05.2019, 19:36 | #5 | |||
Реноме:
1552
|
Точно нет
А вот здесь вы возможно правы. Если он увеличивает ID при повтороных записях, которые не происходят в силу неуникальности, тогда всё становится ясно.
__________________
|
|||
21.05.2019, 10:04 | #6 | |||
Реноме:
1905
|
Возможно где-то добавлялась запись с указанием конкретного значения (13).
Хотя скорее всего miketomlin прав - на таблице есть ещё уникальные индексы (или другие ограничения), при добавлении дублей ошибки игнорируются, но записи в базу не добавляются. Зачем-то добавили же опцию IGNORE (хотя, имхо, это неправильно). Приведите полный синтаксис CREATE для таблицы (с индексами и т.п.). И какая версия БД? P.S. И поищите в программном коде, может быть что-то всё же удаляет
__________________
|
|||
21.05.2019, 10:35 | #7 | |||
Реноме:
1552
|
Скорее всего перед попыткой записать увеличивается каждый раз ID, даже если запись не создаётся, - вот ID и растёт.
добавлено через 1 минуту Чтобы писались только уникальные записи
__________________
Последний раз редактировалось Port_Artur; 21.05.2019 в 10:37. Причина: Добавлено сообщение |
|||
21.05.2019, 11:54 | #8 | |||
Реноме:
960
|
сделайте экспорт структуры таблицы, чтобы можно было сказать точнее
__________________
|
|||
21.05.2019, 11:59 | #9 | |||
Реноме:
1552
|
Ушёл от INSERT IGNORE INTO ds
Делаю обычную проверку, и если количество записей 0 с текущими условиями, делаю новою запись. Спасибо всем за помощь. Вопрос закрыт
__________________
|
|||
21.05.2019, 12:21 | #10 | |||
Реноме:
1905
|
Кстати, ошибка при добавлении может быть не только по причине неуникальности значения (при наличии уникального индекса). В частности, если строковое значение длиннее размера строкового поля тоже будет ошибка, но это в зависимости от версии MySQL и настроек его конфига. По дефолту новые версии выдают ошибку, а не отсекают значение (как это в старых версиях). При этом может быть сюрприз при многобайтовых кодировках
__________________
|
|||
Реклама | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
|
|