主键是否可能不是自动增量?

时间:2012-06-01 21:05:40

标签: mysql sql insert auto-increment

我正在尝试在已经有3行的表中插入一个元素。

一个名为 usuarios = [ id (主要,自动增量), fid 的表格first_name last_name .. ..]

因此ID已经有3行: 0,1,2

当我尝试执行此查询时(注意我没有为id属性设置值)

INSERT INTO usuarios (fid,email,pass,first_name,last_name,avatar,bday,fecha,id_loc,id_loc_from) 
       VALUES       (-1,'toni@ideadeia.com','72253f579e7dc003da754dad4bd403a6','','','',NOW(),NOW(),'','')

我收到这个mysql错误:

Duplicate entry '0' for key 1

额外:我不知道这3个项目是如何插入的(如果是通过界面,通过控制台查询,..)

所以问题是,如何确保Primary Key是自动增量,如果不是;怎么设置呢? (这会解决问题吗?)

1 个答案:

答案 0 :(得分:1)

如果您有权更改表,则应该可以使用此语句将其设置为自动增量:

ALTER TABLE usuarios  modify id INT(11) NOT NULL AUTO_INCREMENT;

虽然我已经看到过有关错误的报告,但建议不要丢弃colulmn并重新创建它,如果上述内容因某些原因无法正常工作。这些帖子中推荐的语法是:

ALTER TABLE usuarios  
         DROP COLUMN id;

ALTER TABLE usuarios  
         ADD COLUMN idINT(11) NOT NULL AUTO_INCREMENT FIRST;

警告:首先在测试数据库中执行此操作。如果表将此作为外键使用,您需要小心这样做。它最多可能失败,或者在最坏的情况下打破所有关系。

MySql reference manual上有大量信息。

相关问题