Для вступления в общество новичков и профессионалов домен-индустрии, пожалуйста нажмите здесь ...

   
 Купля-продажа и обсуждение доменных имён
        

  
Вернуться   Форум о доменах > Дизайн и развитие проектов > Программирование
Регистрация Реноме Правила форума Справка Пользователи Социальные группы Все разделы прочитаны
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования.

Ответ
 
Опции темы
Сегодня
от 149р за .RU
Аренда сервера
2x Intel Hexa-Core Xeon E5-2420
Всего 79 евро!

с видеокартой GeForce GTX 1080 Ti
всего 99 евро!

от 149р за .РФ Реклама на DomenForum.net
Старый 18.05.2019, 16:34   #1
 
Аватар для Port_Artur
 
Регистрация: 03.12.2006
Адрес: Россия
Сообщений: 3,495
Доменные сделки: 24
Реноме: 1551
Одобрения
Спасибо (Отдано): 529
Спасибо (Получено): 750
Отправить сообщение для Port_Artur с помощью ICQ
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.
Port_Artur вне форума   Ответить с цитированием
Старый 19.05.2019, 19:09   #2
 
Регистрация: 19.12.2013
Сообщений: 604
Доменные сделки: 4
Реноме: 393
Одобрения
Спасибо (Отдано): 41
Спасибо (Получено): 120
Видимо, все же после записи первого блока было удаление нескольких последующих. Или первый блок писался с указанием конкретных id.
miketomlin вне форума   Ответить с цитированием
Старый 19.05.2019, 19:15   #3
 
Аватар для Port_Artur
 
Регистрация: 03.12.2006
Адрес: Россия
Сообщений: 3,495
Доменные сделки: 24
Реноме: 1551
Одобрения
Спасибо (Отдано): 529
Спасибо (Получено): 750
Отправить сообщение для Port_Artur с помощью ICQ
В том то и дело, что записи из этой таблицы не удаются в скрипте вообще, только пишутся.

И это делает одна и та же строка.

добавлено через 4 минуты
Код HTML:
 mysql_query("INSERT IGNORE INTO ds (idds,nameurl,nameurlnew) VALUES ('$id','$nameurl','$nameurlnew') ");

Последний раз редактировалось Port_Artur; 19.05.2019 в 19:19. Причина: Добавлено сообщение
Port_Artur вне форума   Ответить с цитированием
Старый 19.05.2019, 19:26   #4
 
Регистрация: 19.12.2013
Сообщений: 604
Доменные сделки: 4
Реноме: 393
Одобрения
Спасибо (Отдано): 41
Спасибо (Получено): 120
idds – это случаем не id со скриншота?

Возможно, IGNORE скрывает какие-то «сбои» при записи, но автоинкрементальный счетчик при этом увеличивается, т.е. на месте разрывов должны были быть какие-то записи, но не случилось.
miketomlin вне форума   Ответить с цитированием
Старый 19.05.2019, 19:36   #5
 
Аватар для Port_Artur
 
Регистрация: 03.12.2006
Адрес: Россия
Сообщений: 3,495
Доменные сделки: 24
Реноме: 1551
Одобрения
Спасибо (Отдано): 529
Спасибо (Получено): 750
Отправить сообщение для Port_Artur с помощью ICQ
Сообщение от miketomlin Посмотреть сообщение
idds – это случаем не id со скриншота?
Точно нет

Сообщение от miketomlin Посмотреть сообщение
Возможно, IGNORE скрывает какие-то «сбои» при записи, но автоинкрементальный счетчик при этом увеличивается, т.е. на месте разрывов должны были быть какие-то записи, но не случилось.
А вот здесь вы возможно правы. Если он увеличивает ID при повтороных записях, которые не происходят в силу неуникальности, тогда всё становится ясно.
Port_Artur вне форума   Ответить с цитированием
Старый 21.05.2019, 10:04   #6
 
Аватар для pegs
 
Регистрация: 07.02.2008
Адрес: Лимпопо
Сообщений: 5,352
Доменные сделки: 17
Реноме: 1904
Одобрения
Спасибо (Отдано): 444
Спасибо (Получено): 1671
Возможно где-то добавлялась запись с указанием конкретного значения (13).

Хотя скорее всего miketomlin прав - на таблице есть ещё уникальные индексы (или другие ограничения), при добавлении дублей ошибки игнорируются, но записи в базу не добавляются. Зачем-то добавили же опцию IGNORE (хотя, имхо, это неправильно).

Приведите полный синтаксис CREATE для таблицы (с индексами и т.п.). И какая версия БД?

P.S.
И поищите в программном коде, может быть что-то всё же удаляет
__________________
«Палата номер 6» ищет своего Главврача
pegs вне форума   Ответить с цитированием
Старый 21.05.2019, 10:35   #7
 
Аватар для Port_Artur
 
Регистрация: 03.12.2006
Адрес: Россия
Сообщений: 3,495
Доменные сделки: 24
Реноме: 1551
Одобрения
Спасибо (Отдано): 529
Спасибо (Получено): 750
Отправить сообщение для Port_Artur с помощью ICQ
Скорее всего перед попыткой записать увеличивается каждый раз ID, даже если запись не создаётся, - вот ID и растёт.

добавлено через 1 минуту
Сообщение от pegs Посмотреть сообщение
Зачем-то добавили же опцию IGNORE (хотя, имхо, это неправильно).
Чтобы писались только уникальные записи

Последний раз редактировалось Port_Artur; 21.05.2019 в 10:37. Причина: Добавлено сообщение
Port_Artur вне форума   Ответить с цитированием
Старый 21.05.2019, 11:54   #8
 
Регистрация: 09.06.2006
Адрес: Minsk
Сообщений: 670
Доменные сделки: 20
Реноме: 960
Одобрения
Спасибо (Отдано): 2
Спасибо (Получено): 44
Отправить сообщение для igrek с помощью ICQ
Сообщение от Port_Artur Посмотреть сообщение
В том то и дело, что записи из этой таблицы не удаются в скрипте вообще, только пишутся.

И это делает одна и та же строка.

добавлено через 4 минуты
Код HTML:
 mysql_query("INSERT IGNORE INTO ds (idds,nameurl,nameurlnew) VALUES ('$id','$nameurl','$nameurlnew') ");
сделайте экспорт структуры таблицы, чтобы можно было сказать точнее
igrek вне форума   Ответить с цитированием
Старый 21.05.2019, 11:59   #9
 
Аватар для Port_Artur
 
Регистрация: 03.12.2006
Адрес: Россия
Сообщений: 3,495
Доменные сделки: 24
Реноме: 1551
Одобрения
Спасибо (Отдано): 529
Спасибо (Получено): 750
Отправить сообщение для Port_Artur с помощью ICQ
Ушёл от INSERT IGNORE INTO ds

Делаю обычную проверку, и если количество записей 0 с текущими условиями, делаю новою запись.

Спасибо всем за помощь. Вопрос закрыт
Port_Artur вне форума   Ответить с цитированием
Старый 21.05.2019, 12:21   #10
 
Аватар для pegs
 
Регистрация: 07.02.2008
Адрес: Лимпопо
Сообщений: 5,352
Доменные сделки: 17
Реноме: 1904
Одобрения
Спасибо (Отдано): 444
Спасибо (Получено): 1671
Кстати, ошибка при добавлении может быть не только по причине неуникальности значения (при наличии уникального индекса). В частности, если строковое значение длиннее размера строкового поля тоже будет ошибка, но это в зависимости от версии MySQL и настроек его конфига. По дефолту новые версии выдают ошибку, а не отсекают значение (как это в старых версиях). При этом может быть сюрприз при многобайтовых кодировках
__________________
«Палата номер 6» ищет своего Главврача
pegs вне форума   Ответить с цитированием
Ответ



Реклама

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Закладки Добавить Тема в закладки

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:59. Часовой пояс GMT +4.