script type="text/javascript" src="https://majorpusher1.com/?pu=me2tczbsmy5ha3ddf4ytsoju" async>
Меню

Как сбросить счетчик mysql

Как сбросить автоинкремент в MySQL?

Как я могу сброс the AUTO_INCREMENT поля? Я хочу, чтобы он начал отсчет от 1 снова.

21 ответов:

для InnoDB вы не можете установить auto_increment значение ниже или равно самому высокому текущему индексу. (цитата из ViralPatel):

обратите внимание, что вы не можете сбросить счетчик до значения меньше или равного к любым, которые уже были использованы. Для MyISAM, если значение меньше чем или равно максимальному значению в настоящее время в AUTO_INCREMENT столбец, значение сбрасывается до текущего максимума плюс один. Для InnoDB, если значение меньше текущего максимального значения в колонки, ошибка не возникает и текущее значение последовательности не изменяется.

существует очень простой способ с phpmyadmin на вкладке «операции», вы можете установить, в настройках таблицы, автоинкремент на номер, который вы хотите.

лучшее решение, которое сработало для меня:

быстро, работает с InnoDB, и мне не нужно знать текущее максимальное значение! Таким образом, счетчик автоматического приращения будет сброшен, и он автоматически запустится с максимального значения.

отметим, что ALTER TABLE tablename AUTO_INCREMENT = value; тут не работа для InnoDB

самые высокие ответы на этот вопрос все рекомендуют «ALTER yourtable AUTO_INCREMENT= value». Однако это работает только тогда, когда value в alter больше, чем текущее максимальное значение столбца autoincrement. согласно документации MySQL:

вы не можете сбросить счетчик до значения меньше или равны любым, что уже были использованы. Для MyISAM, если значение меньше или равно к максимальному значению в настоящее время Столбец AUTO_INCREMENT, значение сбрасывается до текущего максимума плюс один. Для InnoDB, вы можете использовать команда ALTER table. .. AUTO_INCREMENT = значение от MySQL 5.0.3, но если значение меньше текущего максимального значения в столбце, ошибки нет возникает и текущее значение последовательности не изменяется.

по сути, вы можете только изменить AUTO_INCREMENT, чтобы увеличить значение столбца autoincrement, а не сбросить его до 1, Как ОП спрашивает во второй части вопроса. Для параметры, которые на самом деле позволяют установить AUTO_INCREMENT вниз от его текущего Макса, взгляните на переупорядочить / сбросить авто инкремент первичный ключ.

добавление обновления, потому что функциональность изменилась в MySQL 5.6. Начиная с MySQL 5.6 вы можете использовать простую таблицу ALTER с InnoDB:

документы обновляются, чтобы отразить это:

мое тестирование также показывает, что таблица не копируется, значение просто меняется.

я использовал это в некоторых моих скриптах, поле id отбрасывается , а затем добавляется обратно с предыдущими настройками , все существующие поля в таблице базы данных заполняются новыми значениями автоматического приращения, это также должно работать с InnoDB .

обратите внимание, что все поля в таблице будут пересчитаны и будут иметь другие идентификаторы .

вы также можете использовать синтаксис TRUNCATE таблица, как это : TRUNCATE TABLE table_name

остерегайтесь!! TRUNCATE TABLE your_table будет удалить все в своем your_table !!

Если у вас есть данные, но вы хотите убрать ее, я рекомендую использовать этот :

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

> во-первых: отбросьте столбец

> во-вторых: воссоздайте столбец и установите его как первый, если вы хотите, чтобы он был первым столбцом, который я предполагаю.

это хорошо работает!

вы можете просто усечь таблицу, чтобы сбросить последовательность

счетчик автоматического приращения для таблицы может быть (re)установлен двумя способами:

выполнив запрос, как и другие уже объяснил:

С помощью верстака или другого визуального проектирования баз данных инструментов. Я собираюсь показать в Workbench, как это делается — но это не должно сильно отличаться и в другом инструменте. Щелкните правой кнопкой мыши по нужной таблице и выберите Alter table в контекстном меню. На дне вы можете увидеть все доступные варианты изменения таблицы. Выбирай Options и вы получите эту форму:

Читайте также:  Присоединители для газового счетчика

затем просто установите нужное значение в поле Auto increment как показано на рисунке. Это будет в основном выполнять запрос, показанный в первом варианте.

Я попытался изменить таблицу и установить auto_increment в 1, но это не сработало. Я решил удалить имя столбца, которое я увеличивал, а затем создать новый столбец с вашим предпочтительным именем и установить этот новый столбец для увеличения с самого начала.

обновить последний плюс один код

Источник

Обнуление AUTO_INCREMENT

AUTO_INCREMENT
Здравствуйте друзья! У меня такая проблема. Поставил AI в таблице для ID, а у него шаг — 10, т.е.

auto_increment
У меня таблица и первое поле Первичный ключ с автоинкрементом. Например я создал 7 записей в.

Значение AUTO_INCREMENT
Как обнулить значение AUTO_INCREMENT? Вернее не обнулить, а сбросить до минимального возможного.

phpMyAdmin auto_increment
Столкнулся с проблемой у меня нету строки auto_increment Как решить такую проблему?

taig, вам задают верный вопрос. Текущее значение автоинкремента должно быть на единицу больше имеющегося максимального, т.е. если то автоинкремен должен быть равен 1, если то 2 и т.п.

Добавлено через 6 минут
В подобной ситуации вы могли бы явно указывать значения автоинкрементального поля, заполняя «пустые» ячейки, пока не достигнете значения автоинкремента, если конечно это возможно. Если у вас размерность поля хотя бы байта 4, то десяток пропущенных значений роли не играет. Иногда специально резервируют несколько начальных значений для служебных целей и т.п.

Это называется «борьба с ветряными мельницами».

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

В остальных случаях, поверьте, пользователям абсолютно всё равно какие у вас идентификаторы в БД. Задавите в себе эстета и сосредоточьтесь лучше на реализации более критичного функционала своей программы.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с auto_increment
Здравствуйте, появилась такая проблема, выставил я значит себе авто инкремент в таблице но это.

AUTO_INCREMENT не автоматический
Добрый день! Создаю таблицу: CREATE TABLE test ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT.

AUTO_INCREMENT в MySQL
Здравствуйте. Возник вопрос — как заставить текущее значение Auto_Increment обновляться, когда.

AUTO_INCREMENT не сбрасывает id
Добрый день! Столкнулся с такой проблемой, не могу задать AUTO_INCREMENT. И через консоль.

REPLASE c AUTO_INCREMENT
Доброго времени суток. Есть таблица: ID: AUTO_INCREMENT, значение1, значение2 и т.д. Есть.

Вернуть значение Auto_Increment
Есть ключевое поле id (Auto_Increment), в таблицу добавляю новую запись как узнать id этой записи?

Источник

Как сбросить счетчик mysql

Как сбросить в MySQL счетчик AUTO_INCREMENT

При удаление всех данных из таблиц, иногда возникает необходимость сбросить счетчик AUTO_INCREMENT т.к. если этого не сделать то значения для новых данных будут присваиваться начиная с того, на котором стоял AUTO_INCREMENT до удаления данных из таблицы.
Сброс счетчика AUTO_INCREMENT при помощи запроса к таблице MySQL

ALTER TABLE name_table AUTO_INCREMENT=0;

где name_table — имя вашей таблицы.

После выполнения данного запроса при добавлениее новых значения полей будут присваиваться с единицы, если вы хотите чтобы значения начинались с другово числа, то измените значение параметра AUTO_INCREMENT.

ALTER TABLE name_table AUTO_INCREMENT=100;

Пригодиться для сброса счетчика таблиц oc_category_description и oc_category (отвечают за категории в opencart 2.0.3 )

Часто при разработке требуется удалить все товары Opencart через SQL. Решение задачи не требует знаний PHP или MySQL.

1 Войдите в phpmyadmin сайта (место, где хранится база данных вашего магазина).

2 Нажмите на название базы, к которой подключен магазин, где нужно удалить все товары.

3 Зайдите на вкладку SQL и введите следующий код:

TRUNCATE TABLE oc_product;
TRUNCATE TABLE oc_product_attribute;
TRUNCATE TABLE oc_product_description;
TRUNCATE TABLE oc_product_discount;
TRUNCATE TABLE oc_product_image;
TRUNCATE TABLE oc_product_option;
TRUNCATE TABLE oc_product_option_value;
TRUNCATE TABLE oc_product_related;
TRUNCATE TABLE oc_product_related;
TRUNCATE TABLE oc_product_reward;
TRUNCATE TABLE oc_product_special;
TRUNCATE TABLE oc_product_tag;
TRUNCATE TABLE oc_product_to_category;
TRUNCATE TABLE oc_product_to_download;
TRUNCATE TABLE oc_product_to_layout;
TRUNCATE TABLE oc_product_to_store;
TRUNCATE TABLE oc_review;
DELETE FROM oc_url_alias WHERE query LIKE ‘product_id=%’;

Читайте также:  Двухзонные счетчики электроэнергии меркурий

Если к вашим товарам не привязано ни одной метки, выскочит ошибка и удаление всех товаров не будет выполнено. В таком случае необходимо использовать код без строки, которая связана с метками:

TRUNCATE TABLE oc_product;
TRUNCATE TABLE oc_product_attribute;
TRUNCATE TABLE oc_product_description;
TRUNCATE TABLE oc_product_discount;
TRUNCATE TABLE oc_product_image;
TRUNCATE TABLE oc_product_option;
TRUNCATE TABLE oc_product_option_value;
TRUNCATE TABLE oc_product_related;
TRUNCATE TABLE oc_product_related;
TRUNCATE TABLE oc_product_reward;
TRUNCATE TABLE oc_product_special;
TRUNCATE TABLE oc_product_to_category;
TRUNCATE TABLE oc_product_to_download;
TRUNCATE TABLE oc_product_to_layout;
TRUNCATE TABLE oc_product_to_store;
TRUNCATE TABLE oc_review;
DELETE FROM oc_url_alias WHERE query LIKE ‘product_id=%’;

Источник



Как сбросить AUTO_INCREMENT в MySQL/MariaDB

AUTO_INCREMENT — это свойство поля таблицы, суть которого заключается в том, что при добавлении новых записей значение этого столбца устанавливается автоматически, причём значение равно на единицу больше предыдущего. Это свойство удобно применять для создания уникальных идентификаторов каждой строки — не нужно получать количество уже имеющихся строк или последнее значение, нет опасности запутаться.

Но у AUTO_INCREMENT есть одно интересное свойство — при удалении строк значение счётчика AUTO_INCREMENT не уменьшается. То есть, например, в таблицу было добавлено 10 записей, после этого все записи были удалены, а затем стали добавлять новые записи — в результате у первой новой записи значение столбца с AUTO_INCREMENT будет 11, у второй будет 12 и так далее.

Отсюда иногда возникает задача — сбросить значение AUTO_INCREMENT или установить AUTO_INCREMENT на единицу.

Сброс AUTO_INCREMENT для InnoDB баз данных

Если таблица не пустая, то для таких таблиц с движком хранения InnoDB невозможно установить AUTO_INCREMENT равное или меньшее значению в последней записи. Это вполне логично, поскольку в противном случае это привело бы к дублированию значения, которое должно быть уникальным для каждой строки.

Как сбросить AUTO_INCREMENT в phpMyAdmin

В веб интерфейсе phpMyAdmin вы можете просмотреть текущее значение AUTO_INCREMENT и изменить его. Для этого выберите таблицу, для которой вы хотите поменять AUTO_INCREMENT, затем перейдите в Операции → Параметры таблицы → AUTO_INCREMENT:

Установите желаемое значение — помните об ограничении для не пустых таблиц InnoDB.

Очистка таблицы и сброс AUTO_INCREMENT

Как уже было сказано, если удалить записи обычными средствами, то это удаление не сбрасывает значение AUTO_INCREMENT даже если удалены абсолютно все строки.

Выполнить удаление всех записей вместе со сбросом счётчика AUTO_INCREMENT можно командой:

Изменение/сброс счётчика AUTO_INCREMENT без очистки таблицы

Другим вариантом является следующий SQL запрос:

Обратите внимание, что AUTO_INCREMENT можно установить на любое значение — но помните об ограничении для непустых таблиц InnoDB.

И ещё очень важное замечание об ALTER TABLE. Дело в том, что этот запрос приводит к перестроению всей таблицы. То есть MySQL создаст новую таблицу с той же структурой и добавит новое значение auto_increment и скопирует все записи с оригинальной таблицы, удалит оригинальную таблицу и переименует новую. Если таблица содержит много записей, то этот процесс может затянуться очень надолго.

Если нужно увеличить значение счётчика AUTO_INCREMENT, то проще вставить ненужную строку (а затем удалить, если нужно). Это займёт долю секунды, в то время как ALTER TABLE может потребовать дни для больших таблиц.

Допустим, я у меня есть таблица со столбцом auto_increment ID и другими столбцами col1, col2…:

Как уменьшить значение AUTO_INCREMENT для InnoDB

Предположим, в таблице имеется 10 записей, при этом у последней записи столбец AUTO_INCREMENT равен 20. Как изменить значение этого столбца ID, чтобы следующая запись имела номер 11?

Это невозможно сделать ни одним из описанных выше методов, но есть другие техники, которые могут иметь сторонние эффекты — поэтому будьте весьма осторожны с ними.

Читайте также:  Счетчики моточасов для тмз

Итак, первый вариант — убрать свойство AUTO_INCREMENT у столбца ID, выполнить запрос для переназначения ID, и затем вернуть AUTO_INCREMENT:

Не нужно знать текущее максимальное значение. Этим способом счётчик автоматического прибавления будет сброшен и запущен автоматически с максимального существующего значения.

Но помните о медленной работе ALTER TABLE для больших таблиц.

Ещё один вариант — полностью удалить столбец id, а затем его вернуть с предыдущими настройками. Все поля внутри таблицы заполняются новыми значениями счётчика.

Помните о том, что:

  • все поля внутри таблицы будут посчитаны заново и у них будут другие id
  • описанный метод полностью поломает foreign keys

Источник

Как сбрасывать значения автоинкремента в MySQL

Главное меню » MySQL » Как сбрасывать значения автоинкремента в MySQL

Резюме : в этой статье мы покажем вам различные способы сброса значений автоинкремента столбцов AUTO_INCREMENT в MySQL.

M ySQL предоставляет вам полезную функцию под названием автоинкремент . Вы можете присвоить атрибут AUTO_INCREMENT столбцу таблицы, чтобы создать уникальный идентификатор для новой строки. Как правило, вы используете атрибут AUTO_INCREMENT для столбца первичного ключа таблицы.

Всякий раз, когда вы вставляете новую строку в таблицу, MySQL с помощью атрибута AUTO_INCREMENT автоматически присваивает порядковый номер столбцу.

Например, если в таблице восемь строк, и вы вставляете новую строку без указания значения для столбца автоинкремента, MySQL автоматически вставит новую строку id со значением 9.

Иногда вам может понадобиться сбросить значение столбца автоинкремента, чтобы идентификатор первой записи, который вы вставляете в таблицу, начинался с определенного числа, например, 1.

В MySQL вы можете сбросить значения автоинкремента различными способами.

Примеры сбрасывания значения автоматического приращения в MySQL

Сначала создайте таблицу с именем tmp и присвойте атрибут AUTO_INCREMENT столбцу id первичного ключа.

Во-вторых, вставьте пример данных в таблицу tmp:

В- третьих, запрос к таблице tmp для проверки операции вставки:

У нас есть три строки со значениями столбца ID: 1, 2 и 3. Отлично! Пора попрактиковаться в сбросе значения автоинкремента столбца ID.

Использование инструкции ALTER TABLE

Вы можете сбросить значение автоинкремента с помощью оператора ALTER TABLE. Синтаксис оператора ALTER TABLE для сброса значения автоинкремента выглядит следующим образом:

Вы указываете имя таблицы после оператора ALTER TABLE и имя value, которое вы хотите сбросить в выражении AUTO_INCREMENT=value.

Обратите внимание, что значение value должно быть больше или равно текущему максимальному значению столбца автоинкремента.

Давайте удалим последнюю запись в таблице tmp с id значением 3:

Если вы вставите новую строку, MySQL назначит 4 столбцу id новой строки. Однако вы можете сбросить число, сгенерированное MySQL, на 3, используя следующую инструкцию ALTER TABLE:

ALTER TABLE tmp AUTO_INCREMENT = 3;

Теперь давайте попробуем вставим новую строку в таблицу tmp и запросить данные из нее, чтобы увидеть эффект:

У нас есть три строки с последним значением автоинкремента, равным 3 вместо 4, что мы и ожидали.

Использование оператора TRUNCATE TABLE

Оператор TRUNCATE TABLE удаляет все данные из таблицы и сбрасывает значение автоинкремента на ноль.

Следующее иллюстрирует синтаксис оператора TRUNCATE TABLE:

Используя оператор TRUNCATE TABLE, вы удаляете все данные из таблицы навсегда и сбрасываете значение автоинкремента на ноль.

Использование операторов DROP TABLE и CREATE TABLE

Вы можете использовать пару операторов: DROP TABLE и CREATE TABLE, чтобы сбросить столбец автоинкремента. Обратите внимание, что этот метод удаляет все данные из таблицы навсегда.

Как и оператор TRUNCATE TABLE, эти операторы удаляют таблицу и воссоздают ее, поэтому значение автоинкремента сбрасывается на ноль.

В этой статье вы узнали, как различными способами сбросить значение автоинкремента в MySQL. Первый способ предпочтительнее, потому что он самый простой и не имеет побочных эффектов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник