我的实时数据库上有一张表,有几千条记录。
今天早上跟踪一个错误我发现表“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,然后运行执行以下操作的语句:
我对SQL不太热,但我不想破坏我的实时服务器上的数据。
任何人都可以提供建议吗?
答案 0 :(得分: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
然后您可以删除原始表并重命名新表...