2012-02-02 47 views
0

可能重複:
Fragmentation of id's (auto_increment column) in mysql如果發生故障,我可以修復身份證號碼嗎?

我有一個新聞門戶網站,每條新聞都有它的ID現在計數515篇在MySQL

但是前幾天我做了某種一個混亂,所以當添加新聞的ID顯示 2339,我總是不得不手動編輯到516.

有沒有辦法解決這個問題,所以下一篇文章將使用id 517而不是2340?

+0

您可以用'ALTER TABLE'語句重置auto_increment值,但是您真的需要嗎? – 2012-02-02 16:19:27

+0

使用PK作爲素材序列計數器是錯誤的。 PKS其另一個目的 – triclosan 2012-02-02 16:20:21

+0

一些變種http://stackoverflow.com/questions/6629402/re-indexing-mysql-int-primary-keys-reset-auto-increment/6629447#6629447 – triclosan 2012-02-02 16:21:44

回答

1

我想你只是想改變你的自動遞增ID的當前索引?

如果你有PhpMyAdmin,你可以點擊你的表格,然後進入「操作」選項卡。你會看到一個名爲「AUTO_INCREMENT」的字段。你會想它更改爲517,而不是2340

或者,使用SQL:

ALTER TABLE articles SET AUTO_INCREMENT = 517 

編輯:我看到很多評論說,它不會在所有問題。這是真的,它不會影響任何東西,也可能永遠不應該做。不過,如果您仍決定繼續推進,我至少提供了一個解決方案。

+0

感謝名單了很多。這樣做的訣竅 - 現在它回到原來的計數 - Thanx – 2012-02-12 14:00:32

3

A primary key應該僅用於映射關係和唯一標識行。除非您已將ID字段設置爲foreign key,否則重新排序可能會破壞您的大部分數據庫功能。

總之是你問什麼是可能的,但從來沒有在數據庫設計是個好主意。不要讓虛榮心妨礙建立一個好的數據庫。

現在,如果出於某種瘋狂的原因,你仍然想這樣做,你最好的選擇是使用PHP腳本來選擇*並從表中按ID排序。然後讓它遍歷並更新每行的ID列到任何你想要的(例如從0開始並增量)。您最可能遇到的問題是primary key是唯一的,您的ID不是完美的增量順序,因此您可能必須先將ID設置爲常規列,然後將其切換回primary key或​​。操作。

相關問題