2011-06-12 62 views
1

我在我的實時數據庫上有幾千條記錄。如何自動增加此表而不丟失數據?

今早跟蹤的錯誤我發現表「ID」列並沒有被設置爲AUTO_INCREMENT,所以我有1000的ID爲記錄= 0

:(

 
mysql> explain feed_items; 
+--------------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+--------------+--------------+------+-----+---------+-------+ 
| id   | int(11)  | NO |  | 0  |  | 
| feed_id  | int(11)  | YES | MUL | NULL |  | 
| title  | varchar(255) | YES |  | NULL |  | 
| description | text   | YES |  | NULL |  | 
| item_link | varchar(255) | NO |  | NULL |  | 
| item_updated | datetime  | YES |  | NULL |  | 
| item_id  | varchar(255) | YES |  | NULL |  | 
| created_at | datetime  | YES |  | NULL |  | 
| updated_at | datetime  | YES |  | NULL |  | 
| is_hidden | int(11)  | YES |  | 0  |  | 
+--------------+--------------+------+-----+---------+-------+ 

什麼奇怪因此,舊的記錄似乎有auto_increment。所以我的一半記錄有預期的編號,其中一半不是

我想要做的就是將此列設置爲auto_increment,然後運行一個語句如下:

  • 取其中ID爲0下令created_at ASC
  • 爲這些項目的所有feed_items我想的ID設置爲前一個項目的id + 1

我不是太儘管SQL很熱,但我不想破壞活動服務器上的數據。

任何人都可以建議嗎?

回答

2

取決於你的表的大小,並使其脫機的可能性,你可以簡單地創建具有相同的字段架構中的第二個表並插入選擇您的數據......

INSERT INTO _YourSecondTableName_ (feed_id,title,description,item_link,item_updated,item_id,created_at,updated_at,is_hidden) 
SELECT feed_id,title,description,item_link,item_updated,item_id,created_at,updated_at,is_hidden 
FROM _YourFirstTableName_ 
ORDER BY created_at ASC 

然後你可以放下原來的桌子,重新命名新的桌子...

+0

謝謝 - 我能夠將這個融入到軌道移植 - 運作良好! – bodacious 2011-06-12 13:06:00

相關問題