#1062 - 关键'PRIMARY'重复输入

时间:2012-07-24 20:05:20

标签: mysql sql mysql-error-1062

所以我的MySQL数据库表现得有点奇怪。这是我的表:

Name shares id  price   indvprc
cat   2     4   81      0
goog  4     4   20      20
fb    4     9   20      20

当我尝试插入表格时,我收到了#1062错误。所以我进一步调查并意识到当我尝试将值插入表中,其中名称和共享值相同时,它将返回#1062错误。例如,如果我插入:

fb    4      6     20   20 

会返回错误。但如果我将股票数量改为6,那就可以了。是因为我的一个列可能是唯一的,还是只是mysql的东西?

9 个答案:

答案 0 :(得分:13)

您需要将sharesPRIMARY KEY

删除UNIQUE_KEY

答案 1 :(得分:7)

使用SHOW CREATE TABLE your-table-name查看哪个列 是您的主键。

答案 2 :(得分:7)

  1. 确保选择了//#1 config = new RealmConfiguration.Builder(_activity) .name("static.realm") .build(); //#2 config = new RealmConfiguration.Builder(_activity) .name("user.realm") .schemaVersion(1) .migration(new Migration()) .build(); {。1}}。
  2. 只需启用自动增量:
    PRIMARY KEY
  3. 执行insert命令时,必须跳过此键。

答案 3 :(得分:3)

我通过更改"锁定"解决了这个问题。属于"共享" to" exclusive":

ALTER TABLE `table` 
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;

答案 4 :(得分:2)

确切的错误讯息是什么? #1062表示违反列的主键约束的重复条目 - 归结为列中不能有两个相同的值。错误消息应该告诉你哪些列受到约束,我猜是“共享”。

答案 5 :(得分:1)

可能这不是解决方案中最好的,但执行以下操作将解决问题

步骤1:使用以下命令进行数据库转储

mysqldump -u root -p databaseName > databaseName.db

找到行

ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;

步骤2:将*******更改为mysql表ID的最大ID。保存此值。

第3步:再次使用

mysql -u root -p databaseName < databaseName.db

在我的情况下,当我添加一个手动条目用于将数据输入到其他表中时,我收到此错误。一些我们如何使用mysql命令将值AUTO_INCREMENT设置为max id

答案 6 :(得分:0)

您的域名提供商cpanel修复数据库。

或者看看你是不是在phpMyAdmin中合并了什么

答案 7 :(得分:0)

由于要同时存在自动增量和主键列,因此我正在导入的DB发生了冲突。

问题在于,在.sql文件中,表被切成多个“ INSERT INTO”,并且在导入期间,这些查询全部一起执行。

我的解决方案是在Navicat上取消选择“在每次执行中运行多个查询”,并且效果很好

答案 8 :(得分:-2)

我使用DataNucleus和使用UTF8创建的数据库从mySQL发生此错误 - 错误是由主键的此注释引起的:

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDSTRING)
protected String id;

删除表并使用此方法重新生成它。

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
protected String id;