首页 文章

如何在不丢失数据的情况下自动增加此表?

提问于
浏览
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_incremented . 所以我的一半记录都有预期的id,其中一半没有

我想要做的是将此列设置为auto_increment,然后运行执行以下操作的语句:

  • 获取所有feed_items,其中id为0,由created_at ASC排序

  • 对于这些项目我'd like to set the id to the previous item' s id 1

我对SQL不太热,我不想破坏我的实时服务器上的数据 .

任何人都可以建议吗?

1 回答

  • 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
    

    然后你可以删除原始表并重命名新表...

相关问题