2010-06-11 3 views
65

Я тестировал некоторые данные в своих таблицах моей базы данных, чтобы увидеть, была ли какая-либо ошибка, теперь я очистил все данные тестирования, но мой идентификатор (auto increment) больше не начинается с 1, может (как это сделать) Я сбросил его?Сброс ID автоинкремент? phpmyadmin

ответ

128
ALTER TABLE `table_name` AUTO_INCREMENT=1 
+7

На самом деле 'ALTER TABLE tablename AUTO_INCREMENT = 0' работал лучше для меня, в противном случае новая запись была добавлена ​​с id = 2. –

+0

Ответ Микки ниже помог мне в лучшем случае https://stackoverflow.com/a/16114913/1123816 –

15

ALTER TABLE xxx AUTO_INCREMENT = 1; или очистить таблицу TRUNCATE

+4

+ 1 для truncate – mcgrailm

77

Вы также можете сделать это в phpMyAdmin без написания SQL.

  • Нажмите на название базы данных в левой колонке.
  • Нажмите на имя таблицы в левом столбце.
  • Перейдите на вкладку «Операции» вверху.
  • В разделе «Параметры таблицы» должно быть поле для AUTO_INCREMENT (только для таблиц с полем автоматического увеличения).
  • Введите нужное значение и нажмите кнопку «Перейти» ниже.

Примечание: Вы увидите, что PhpMyAdmin выдает тот же SQL, который упоминается в других ответах.

-1

Я только что испытал эту проблему в одном из своих MySQL db, и я посмотрел на ответ phpMyAdmin. Однако лучший способ, по которому я исправил его в phpMyAdmin, был в затронутой таблице, отбросить столбец id и создать новый/новый столбец id (добавление A-I -autoincrement-). Это правильно восстановило мой идентификатор таблицы - просто! Надеюсь, что это поможет (код MySQL не нужен - я надеюсь научиться использовать это, но позже!) Кто-нибудь еще с этой проблемой.

+0

sql, который phpMyAdmin использует, чтобы сделать то, что вы говорите ему, - это, по сути, ответ Mikeys4u чуть выше этого. И вы можете увидеть мой комментарий там о том, почему, пока это будет хорошо в некоторых настройках, это не лекарство от –

10

Я согласен с rpd, это ответ и может быть выполнен на регулярной основе, чтобы очистить столбец идентификатора, который увеличивается с помощью всего лишь нескольких сотен строк данных, но может быть ID 34444543 !, поскольку данные удаляются регулярно, но идентификатор увеличивается автоматически.

ALTER TABLE users DROP id 

Вышеупомянутый sql может быть запущен через sql-запрос или как php. Это приведет к удалению столбца id.

Затем снова добавить его снова, с помощью кода ниже:

ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST 

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

+1

+1 хорошее решение, так как в моем случае - если таблица все еще содержит некоторые данные (первые 2 пользователя), auto inc не будет изменен. Но с вашими решениями он будет перенастроить все индексы. – MJoraid

+3

«Это ответ и может быть сделано на регулярной основе, чтобы очистить ваш столбец идентификатора, который становится больше всего за несколько сотен строк данных»? Разве я единственный, кто видит, что это безумие? ОП спросил (я думаю) о ** пустой ** таблице! Ваша «_ррегулярная основа» предлагает сделать это регулярно на таблице, полной данных. Как вы это себе представляете?Что относительно отношений (другие таблицы, которые используют ID из этой таблицы?) Если вы просто отпустите «id» и заново создадите его, вы полностью измените идентификаторы своих записей. Вы также можете прекратить использование столбца 'id' вообще! – trejder

+0

Каждая ситуация другая .... У меня всего 8000 строк, и мой идентификатор добрался до 9 или 10 чисел ... нет отношений и просто выбрал самые последние результаты (самый высокий идентификатор). Это делается раз в месяц по запланированной задаче, после 18 месяцев никогда не возникало проблемы ... – Mikeys4u